Khi bạn cần kết hợp dữ liệu từ nhiều bảng trong cơ sở dữ liệu, bạn sẽ sớm gặp tình huống không phải lúc nào cũng có cặp dữ liệu trùng khớp giữa hai bảng. Lúc này, các loại JOIN khác nhau sẽ giúp bạn quyết định lấy dữ liệu nào, bỏ dữ liệu nào. Trong bài học này, ta sẽ tìm hiểu LEFT JOIN – một trong những loại kết nối quan trọng nhất trong SQL.
LEFT JOIN là gì?
LEFT JOIN (còn gọi là LEFT OUTER JOIN) là một câu lệnh dùng để kết hợp dữ liệu từ hai bảng:
- Giữ toàn bộ dữ liệu của bảng bên trái (
LEFT TABLE
). - Nếu bảng bên phải (
RIGHT TABLE
) có dòng khớp, sẽ nối vào. - Nếu không có dòng khớp, sẽ trả về giá trị NULL ở phía bên phải.
Nói đơn giản: giữ nguyên bảng bên trái, bảng bên phải có thì lấy, không có thì để trống.
Cú pháp LEFT JOIN
SELECT
bảng1.cột1,
bảng2.cột2
FROM
bảng1
LEFT JOIN
bảng2
ON
bảng1.cột_kết_nối = bảng2.cột_kết_nối;
Bảng
bảng1
là bảng bên trái, được giữ nguyên toàn bộ dòng.
Ví dụ thực tế
Giả sử ta có 2 bảng:
students
– Danh sách học sinh.scores
– Bảng điểm, không phải học sinh nào cũng có điểm.
SELECT
students.id,
students.name,
scores.math
FROM
students
LEFT JOIN
scores
ON
students.id = scores.student_id;
Kết quả:
id | name | math |
---|---|---|
1 | An | 8.0 |
2 | Bình | NULL |
3 | Chi | 9.5 |
Học sinh “Bình” chưa có điểm → cột
math
bị để trống (NULL), nhưng dòng vẫn được giữ lại.
Khi nào nên dùng LEFT JOIN?
- Khi bạn muốn liệt kê tất cả dữ liệu của bảng chính, dù bảng phụ có dữ liệu hay không.
- Dùng để tìm các dòng không có đối chiếu (ví dụ: học sinh chưa nộp bài, khách hàng chưa có đơn hàng…).
- Khi cần giữ bối cảnh đầy đủ trong báo cáo hoặc dashboard.
Lưu ý khi dùng LEFT JOIN
- Cẩn thận với điều kiện
ON
– nếu viết sai sẽ dẫn đến kết quả sai hoặc không đầy đủ. - Nếu cần lọc các dòng KHÔNG có kết nối, có thể dùng thêm
WHERE bảng2.cột IS NULL
.
-- Tìm học sinh chưa có điểm
SELECT name
FROM students
LEFT JOIN scores ON students.id = scores.student_id
WHERE scores.math IS NULL;
Tổng kết
- LEFT JOIN giữ toàn bộ bảng bên trái, nối thêm từ bảng phải nếu có.
- Giúp hiển thị đầy đủ dữ liệu chính kể cả khi không có liên kết ở bảng phụ.
- Rất hữu ích trong các truy vấn báo cáo và kiểm tra dữ liệu thiếu.
👉 Trong bài tiếp theo, chúng ta sẽ tìm hiểu RIGHT JOIN – một trường hợp ngược lại, giữ bảng bên phải và nối từ trái. Đây là bước tiếp theo giúp bạn làm chủ các loại JOIN trong SQL.
Thảo luận