Liệt kê dữ liệu chỉ có ở bảng table1 mà không có ở bảng table2 trong SQL

Bài viết này hướng dẫn bạn cách truy vấn dữ liệu chỉ có ở bảng `table1` mà không có ở bảng `table2` trong SQL. Chúng ta sẽ tìm hiểu các phương pháp khác nhau như `LEFT JOIN`, `NOT EXISTS`, và `NOT IN`.

Trong SQL, để lấy ra dữ liệu chỉ có trong một bảng mà không có trong bảng khác, bạn có thể sử dụng các phương pháp như LEFT JOIN, NOT EXISTS, hoặc NOT IN. Dưới đây là một số cách để thực hiện điều này.

Cách 1: Sử dụng LEFT JOIN

SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
WHERE t2.id IS NULL;

Cách 2: Sử dụng NOT EXISTS

SELECT *
FROM table1 t1
WHERE NOT EXISTS (
    SELECT 1
    FROM table2 t2
    WHERE t1.id = t2.id
);

Cách 3: Sử dụng NOT IN

SELECT *
FROM table1
WHERE id NOT IN (
    SELECT id FROM table2
);

Giải thích chi tiết từng dòng code

Cách 1 - LEFT JOIN:

  • LEFT JOIN: Kết hợp table1 với table2 dựa trên điều kiện, trả về tất cả dữ liệu từ table1 và dữ liệu tương ứng từ table2.
  • WHERE t2.id IS NULL: Lọc ra những dòng từ table1 mà không có tương ứng trong table2.

Cách 2 - NOT EXISTS:

  • NOT EXISTS: Kiểm tra xem có dòng nào trong table2 mà có id trùng khớp với table1 hay không. Nếu không có, dòng đó sẽ được chọn.

Cách 3 - NOT IN:

  • NOT IN: Chọn tất cả dòng từ table1id không nằm trong danh sách id từ table2.

Yêu cầu hệ thống:

  • Cơ sở dữ liệu SQL (MySQL, PostgreSQL, SQL Server, Oracle, etc.)

Cách cài đặt các thư viện để chạy được đoạn mã SQL trên:

Không cần cài đặt thư viện bổ sung, chỉ cần một cơ sở dữ liệu SQL để chạy truy vấn.

Lời khuyên:

  • Hãy chọn phương pháp phù hợp với tình huống cụ thể của bạn, mỗi phương pháp có ưu nhược điểm riêng. Ví dụ, LEFT JOIN có thể dễ hiểu hơn nhưng có thể chậm hơn khi làm việc với bảng lớn.
Tags: SQL


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách tìm kiếm chuỗi trong tất cả các bảng của cơ sở dữ liệu SQL

Hướng dẫn cách tìm kiếm một chuỗi cụ thể trong tất cả các bảng và cột của cơ sở dữ liệu SQL bằng cách sử dụng truy vấn động. Điều này giúp phát hiện chuỗi ở bất kỳ đâu trong cơ sở dữ liệu.
Liệt kê dữ liệu chung của hai bảng dựa trên khóa liên kết trong SQL

Hướng dẫn cách sử dụng câu lệnh SQL để liệt kê dữ liệu chung của hai bảng dựa trên khóa liên kết. Bài viết giúp bạn hiểu rõ hơn về cách sử dụng `INNER JOIN` để kết hợp dữ liệu từ hai bảng.

Đã thêm vào giỏ hàng