Đăng nhập

Bài 18. LEFT JOIN – Giữ lại toàn bộ bảng bên trái

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ảng1bả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ả:

idnamemath
1An8.0
2BìnhNULL
3Chi9.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

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.