Từ khóa SQL FULL OUTER JOIN
Từ khóa SQL FULL OUTER JOIN
Từ FULL OUTER JOIN
khóa trả về tất cả các bản ghi khi có sự trùng khớp trong các bản ghi bảng bên trái (table1) hoặc bên phải (table2).
Mẹo: FULL OUTER JOIN
và
FULL JOIN
đều giống nhau.
Cú pháp FULL OUTER JOIN
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
Lưu ý: FULL OUTER JOIN
có thể trả về tập kết quả rất lớn!
Cơ sở dữ liệu Demo
Trong hướng dẫn này, chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu Northwind nổi tiếng.
Dưới đây là lựa chọn từ bảng "Khách hàng":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
Và lựa chọn từ bảng "Đơn hàng":
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10308 | 2 | 7 | 1996-09-18 | 3 |
10309 | 37 | 3 | 1996-09-19 | 1 |
10310 | 77 | 8 | 1996-09-20 | 2 |
Ví dụ về SQL FULL OUTER JOIN
Câu lệnh SQL sau chọn tất cả khách hàng và tất cả các đơn đặt hàng:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
Một lựa chọn từ tập hợp kết quả có thể trông như thế này:
CustomerName | OrderID |
---|---|
Null | 10309 |
Null | 10310 |
Alfreds Futterkiste | Null |
Ana Trujillo Emparedados y helados | 10308 |
Antonio Moreno Taquería | Null |
Lưu ý: Từ FULL OUTER JOIN
khóa trả về tất cả các bản ghi phù hợp từ cả hai bảng cho dù bảng khác có khớp hay không. Vì vậy, nếu có hàng trong "Khách hàng" không khớp trong "Đơn đặt hàng" hoặc nếu có hàng trong "Đơn hàng" không khớp trong "Khách hàng", những hàng đó cũng sẽ được liệt kê.