Tất Tần Tật Các Kiểu Join
INNER JOIN
Tóm tắt: Chỉ kết hợp các hàng có giá trị tương ứng trong cả hai bảng.
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate, Customers.City
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
No | CustomerID | CustomerName | OrderID | OrderDate | City |
---|---|---|---|---|---|
1 | 1 | Alice | 101 | 2024-01-01 | New York |
2 | 1 | Alice | 103 | 2024-01-03 | New York |
3 | 2 | Bob | 102 | 2024-01-02 | Los Angeles |
4 | 3 | Charlie | 104 | 2024-01-04 | Chicago |
LEFT JOIN
Tóm tắt: Kết hợp tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải. Nếu không có hàng nào khớp trong bảng bên phải, các cột của bảng bên phải sẽ chứa NULL.
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate, Customers.City
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
No | CustomerID | CustomerName | OrderID | OrderDate | City |
---|---|---|---|---|---|
1 | 1 | Alice | 101 | 2024-01-01 | New York |
2 | 1 | Alice | 103 | 2024-01-03 | New York |
3 | 2 | Bob | 102 | 2024-01-02 | Los Angeles |
4 | 3 | Charlie | 104 | 2024-01-04 | Chicago |
5 | 4 | David | NULL | NULL | Houston |
RIGHT JOIN
Tóm tắt: Kết hợp tất cả các hàng từ bảng bên phải và các hàng khớp từ bảng bên trái. Nếu không có hàng nào khớp trong bảng bên trái, các cột của bảng bên trái sẽ chứa NULL.
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate, Customers.City
FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
No | CustomerID | CustomerName | OrderID | OrderDate | City |
---|---|---|---|---|---|
1 | 1 | Alice | 101 | 2024-01-01 | New York |
2 | 1 | Alice | 103 | 2024-01-03 | New York |
3 | 2 | Bob | 102 | 2024-01-02 | Los Angeles |
4 | 3 | Charlie | 104 | 2024-01-04 | Chicago |
5 | NULL | NULL | 105 | 2024-01-05 | NULL |
FULL JOIN
Tóm tắt: Kết hợp tất cả các hàng khi có một giá trị khớp trong một trong hai bảng. Nếu không có giá trị khớp, các cột thiếu sẽ chứa NULL.
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate, Customers.City
FROM Customers
FULL JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
No | CustomerID | CustomerName | OrderID | OrderDate | City |
---|---|---|---|---|---|
1 | 1 | Alice | 101 | 2024-01-01 | New York |
2 | 1 | Alice | 103 | 2024-01-03 | New York |
3 | 2 | Bob | 102 | 2024-01-02 | Los Angeles |
4 | 3 | Charlie | 104 | 2024-01-04 | Chicago |
5 | 4 | David | NULL | NULL | Houston |
6 | NULL | NULL | 105 | 2024-01-05 | NULL |
CROSS JOIN
Tóm tắt: Kết hợp tất cả các hàng của bảng thứ nhất với tất cả các hàng của bảng thứ hai (tích Descartes).
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders;
No | CustomerName | OrderID |
---|---|---|
1 | Alice | 101 |
2 | Alice | 102 |
3 | Alice | 103 |
4 | Alice | 104 |
5 | Alice | 105 |
6 | Bob | 101 |
7 | Bob | 102 |
8 | Bob | 103 |
9 | Bob | 104 |
10 | Bob | 105 |
11 | Charlie | 101 |
12 | Charlie | 102 |
13 | Charlie | 103 |
14 | Charlie | 104 |
15 | Charlie | 105 |
16 | David | 101 |
17 | David | 102 |
18 | David | 103 |
19 | David | 104 |
20 | David | 105 |
SELF JOIN
Tóm tắt: Kết hợp một bảng với chính nó như thể nó là hai bảng riêng biệt. Đây là ví dụ để tìm những khách hàng ở cùng thành phố.
SELECT A.CustomerName AS Customer1, B.CustomerName AS Customer2, A.City
FROM Customers A, Customers B
WHERE A.City = B.City
AND A.CustomerID < B.CustomerID;
No | Customer1 | Customer2 | City |
---|---|---|---|
1 | No rows returned |
Join the conversation