Mệnh đề JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN

Danh sách các loại JOIN phổ biến trong MySQL bao gồm:

  1. INNER JOIN hay JOIN: Kết hợp dữ liệu từ hai bảng có khóa chính phù hợp.
  2. LEFT JOIN (OUTER): Kết hợp tất cả các bản ghi từ bảng bên trái và chỉ các bản ghi phù hợp từ bảng bên phải.
  3. RIGHT JOIN (OUTER): Kết hợp tất cả các bản ghi từ bảng bên phải và chỉ các bản ghi phù hợp từ bảng bên trái.
  4. FULL JOIN (OUTER): Kết hợp tất cả các bản ghi từ cả hai bảng bên trái và bên phải. FULL JOIN không được hỗ trợ trong tất cả các hệ quản trị cơ sở dữ liệu. Nếu hệ thống của bạn không hỗ trợ FULL JOIN, bạn có thể sử dụng UNION của 2 câu truy vấn LEFT JOIN và RIGHT JOIN để đạt được kết quả tương tự.

Giả sử có 2 bảng dữ liệu sau:

Bảng customers

+----+--------------+---------------+
| id | customer_name| customer_email|
+----+--------------+---------------+
|  1 | John Doe     | john@doe.com  |
|  2 | Jane Smith   | jane@smith.com|
|  3 | Bob Johnson  | bob@johnson.com|
+----+--------------+---------------+

 

Bảng orders

+-----+-------------+----------------+
| id  | customer_id | order_date     |
+-----+-------------+----------------+
| 101 | 1           | 2021-01-01     |
| 102 | 1           | 2021-02-01     |
| 103 | 2           | 2021-03-01     |
+-----+-------------+----------------+

 

INNER JOIN

+--------------+---------------+
| customer_name| order_date    |
+--------------+---------------+
| John Doe     | 2021-01-01    |
| John Doe     | 2021-02-01    |
| Jane Smith   | 2021-03-01    |
+--------------+---------------+

 

LEFT JOIN

+--------------+---------------+
| customer_name| order_date    |
+--------------+---------------+
| John Doe     | 2021-01-01    |
| John Doe     | 2021-02-01    |
| Jane Smith   | 2021-03-01    |
| Bob Johnson  | NULL          |
+--------------+---------------+

 

RIGHT JOIN

+--------------+---------------+
| customer_name| order_date    |
+--------------+---------------+
| John Doe     | 2021-01-01    |
| John Doe     | 2021-02-01    |
| Jane Smith   | 2021-03-01    |
| NULL         | NULL          |
+--------------+---------------+

 

FULL JOIN

+--------------+---------------+
| customer_name| order_date    |
+--------------+---------------+
| John Doe     | 2021-01-01    |
| John Doe     | 2021-02-01    |
| Jane Smith   | 2021-03-01    |
| Bob Johnson  | NULL          |
| NULL         | NULL          |
+--------------+---------------+