RIGHT JOIN (hay còn gọi là RIGHT OUTER JOIN) là một kiểu liên kết trong MySQL, tương tự như LEFT JOIN, nhưng nó trả về tất cả các hàng từ bảng bên phải (bảng thứ hai được khai báo), và chỉ trả về các hàng tương ứng từ bảng bên trái nếu có giá trị khớp. Nếu không có bản ghi khớp từ bảng bên trái, các cột của bảng bên trái sẽ có giá trị NULL.
Customers
OrderID | Product | CustomerName |
---|---|---|
101 | Laptop | John Smith |
102 | Smartphone | Ana Williams |
NULL | NULL | Maria Anders |
Giả sử bạn có thêm một bảng Products và bạn muốn kết hợp dữ liệu từ các bảng này để liệt kê tất cả các sản phẩm đã được bán (nếu có), và tên của khách hàng đã mua chúng. Nếu một sản phẩm chưa được bán, nó vẫn sẽ xuất hiện trong kết quả với giá trị NULL cho cột khách hàng.
Bảng Products
:
ProductID | ProductName | Price |
---|---|---|
1001 | Laptop | 800 |
1002 | Smartphone | 500 |
1003 | Tablet | 300 |
1004 | Smartwatch | 200 |
Truy vấn sử dụng RIGHT JOIN trên ba bảng để liệt kê tất cả sản phẩm và thông tin đơn hàng (nếu có):
Suppliers
SupplierName | ProductName | Price | TotalQuantity |
---|---|---|---|
Tech Supplies | Laptop | 800 | 5 |
Global Gadgets | Smartphone | 500 | 10 |
NULL | Tablet | 300 | NULL |
Infinity Goods | Smartwatch | 200 | 7 |
Nếu bạn muốn liệt kê tất cả các nhà cung cấp, bao gồm cả những nhà cung cấp chưa có sản phẩm nào trong bảng Products, bạn có thể sử dụng RIGHT JOIN để đảm bảo lấy toàn bộ dữ liệu từ bảng Products và kết hợp với thông tin nhà cung cấp (nếu có).
SELECT Suppliers.SupplierName, Products.ProductName, Products.Price FROM Suppliers RIGHT JOIN Products ON Suppliers.SupplierID = Products.SupplierID;
SupplierName | ProductName | Price |
---|---|---|
Tech Supplies | Laptop | 800 |
Global Gadgets | Smartphone | 500 |
NULL | Tablet | 300 |
Infinity Goods | Smartwatch | 200 |
Giả sử bạn muốn liệt kê tất cả các sản phẩm có giá lớn hơn 400 và thông tin về nhà cung cấp (nếu có). Bạn có thể kết hợp RIGHT JOIN với WHERE để lọc dữ liệu.
SELECT Suppliers.SupplierName, Products.ProductName, Products.Price FROM Suppliers RIGHT JOIN Products ON Suppliers.SupplierID = Products.SupplierID WHERE Products.Price > 400;
SupplierName | ProductName | Price |
---|---|---|
Tech Supplies | Laptop | 800 |
Global Gadgets | Smartphone | 500 |
Bạn có thể sử dụng RIGHT JOIN để tìm ra các sản phẩm chưa có nhà cung cấp bằng cách lọc các bản ghi có giá trị NULL trong cột SupplierName.
SELECT Products.ProductName, Products.Price FROM Suppliers RIGHT JOIN Products ON Suppliers.SupplierID = Products.SupplierID WHERE Suppliers.SupplierName IS NULL;
ProductName | Price |
---|---|
Tablet | 300 |
RIGHT JOIN rất hữu ích trong các trường hợp bạn cần ưu tiên bảng bên phải và muốn lấy tất cả dữ liệu từ bảng này, bất kể có bản ghi tương ứng trong bảng còn lại hay không.