MySQL CROSS JOIN Keyword
Từ khóa SQL CROSS JOIN
Từ CROSS JOIN
khóa trả về tất cả các bản ghi từ cả hai bảng (table1 và table2).
Cú pháp CROSS JOIN
SELECT column_name(s)
FROM table1
CROSS JOIN table2;
Lưu ý: CROSS 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ề CROSS JOIN trong MySQL
Câu lệnh SQL sau chọn tất cả khách hàng và tất cả các đơn hàng:
Thí dụ
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders;
Lưu ý: Từ CROSS 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ê.
Nếu bạn thêm một WHERE
mệnh đề (nếu table1 và table2 có mối quan hệ), thì mệnh đề CROSS JOIN
sẽ tạo ra kết quả tương tự như INNER JOIN
mệnh đề:
Thí dụ
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders
WHERE Customers.CustomerID=Orders.CustomerID;