Trong bài viết này, bạn sẽ học được cách sử dụng MySQL RIGHT JOIN
để truy vấn dữ liệu từ hai bảng.
Giới thiệu về mệnh đề MySQL RIGHT JOIN
MySQL RIGHT JOIN
tương tự LEFT JOIN
, ngoại trừ việc xử lý các bảng đã tham gia bị đảo ngược (Nghĩa là sẽ lấy tất cả kết quả của bảng bên phải).
Đây là cú pháp của RIGHT JOIN
hai bảng t1
và t2
:
SELECT select_list FROM t1 RIGHT JOIN t2 ON join_condition;
Trong cú pháp này:
t1
là bảng bên trái vàt2
là bảng bên phải.join_condition
chỉ định quy tắc cho các hàng phù hợp từ cả hai bảng.
Nếu join_condition
sử dụng toán tử bằng nhau ( =
) và các cột được nối của cả hai bảng có cùng tên và bạn có thể sử dụng cú pháp USING
như sau:
SELECT select_list FROM t1 RIGHT JOIN t2 USING(column_name);
Do đó, các điều kiện tham gia sau đây là tương đương:
ON t1.column_name = t2.column_name
Và:
USING (column_name);
Làm thế nào để RIGHT JOIN
hoạt động.
RIGHT JOIN
bắt đầu chọn dữ liệu từ bảng bên phải ( t2
). Nó khớp từng hàng từ bảng bên phải với mọi hàng từ bảng bên trái. Nếu cả hai hàng khiến điều kiện nối được đánh giá thành TRUE
, thì RIGHT JOIN
sẽ kết hợp các cột của các hàng này thành một hàng mới và bao gồm hàng mới này trong tập hợp kết quả.
Nếu một hàng từ bảng bên phải không có hàng phù hợp từ bảng bên trái, tính năng này RIGHT JOIN
sẽ kết hợp các cột của các hàng từ bảng bên phải với NULL
các giá trị cho tất cả các cột của bảng bên phải thành một hàng mới và bao gồm hàng này trong tập hợp kết quả.
Nói cách khác, RIGHT JOIN
trả về tất cả các hàng từ bảng bên phải bất kể có các hàng phù hợp từ bảng bên trái hay không.
Điều quan trọng là phải nhấn mạnh rằng các mệnh đề RIGHT JOIN
và LEFT JOIN
tương đương về mặt chức năng và chúng có thể thay thế lẫn nhau miễn là thứ tự bảng được đảo ngược.
Lưu ý rằng the RIGHT OUTER JOIN
với RIGHT JOIN
có cùng chức năng như nhau. Do đó, bạn có thể sử dụng chúng thay thế cho nhau.
Ví dụ về mệnh đề MySQL RIGHT JOIN
Chúng ta sẽ sử dụng hai bảng employees
và customers
từ cơ sở dữ liệu mẫu để mô tả:
Cột salesRepEmployeeNumber
trong bảng customers
liên kết với cột employeeNumber
trong bảng employees
.
Một đại diện bán hàng, hoặc một nhân viên, có thể phụ trách nhiều hoặc không phụ trách khách hàng nào cả. Và mỗi khách hàng được chăm sóc bởi một hoặc nhiều đại diện bán hàng.
Nếu giá trị trong cột salesRepEmployeeNumber
là NULL, có nghĩa là khách hàng không có bất kỳ đại diện bán hàng nào.
1) Ví dụ đơn giản về MySQL RIGHT JOIN
Câu lệnh này sử dụng mệnh đề RIGHT JOIN
để nối bảng customers
với bảng employees
.
SELECT employeeNumber, customerNumber FROM customers RIGHT JOIN employees ON salesRepEmployeeNumber = employeeNumber ORDER BY employeeNumber;
Kết quả:
Trong ví dụ này:
RIGHT JOIN
trả về tất cả các hàng từ bảngemployees
cho dù các hàng trong bảngemployees
có khớp với các giá trị trong cộtsalesRepEmployeeNumber
của bảngcustomer
hay không.- Nếu một hàng từ bảng
employees
không có hàng phù hợp từ bảngcustomers
,RIGHT JOIN
sẽ sử dụngNULL
cho cộtcustomerNumber
.
2) Sử dụng MySQL RIGHT JOIN để tìm các hàng không khớp
Câu lệnh sau đây sử dụng mệnh đề RIGHT JOIN
để tìm những nhân viên không phụ trách bất kỳ khách hàng nào:
SELECT employeeNumber, customerNumber FROM customers RIGHT JOIN employees ON salesRepEmployeeNumber = employeeNumber WHERE customerNumber is NULL ORDER BY employeeNumber;
Kết quả:
Tổng kết.
- MySQL
RIGHT JOIN
cho phép bạn truy vấn dữ liệu từ hai hoặc nhiều bảng liên quan. RIGHT JOIN
bắt đầu chọn các hàng từ bảng bên phải. Nó luôn trả về các hàng từ bảng bên phải cho dù có các hàng khớp trong bảng bên trái hay không.RIGHT OUTER JOIN
là đồng nghĩa vớiRIGHT JOIN
do đó chúng ta có thể sử dụng một trong hai là như nhau.
Các bài viết liên quan: