The Exercise Archive created by Thai Phong Nguyen for the purpose of storing learning materials.

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
No pain, no gain!
Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.