Để tìm ID có trong bảng A nhưng không có trong bảng B, dùng subquery với NOT IN.
Cú pháp
SELECT bang_a.id_cot FROM bang_a WHERE bang_a.id_cot NOT IN (SELECT bang_b.id_cot FROM bang_b);
Ví dụ minh họa
Bảng First_Table (ID: 1,2,3,4), bảng Second_Table (ID: 2,4).
Tạo dữ liệu
mysql> CREATE TABLE First_Table (Id INT); mysql> INSERT INTO First_Table VALUES (1),(2),(3),(4); mysql> CREATE TABLE Second_Table (Id INT); mysql> INSERT INTO Second_Table VALUES (2),(4);
Truy vấn tìm ID thiếu
mysql> SELECT First_Table.Id
-> FROM First_Table
-> WHERE First_Table.Id NOT IN (SELECT Second_Table.Id FROM Second_Table);
Kết quả:
+------+ | Id | +------+ | 1 | | 3 | +------+
Cách thay thế (LEFT JOIN): Hiệu quả hơn với dữ liệu lớn:
SELECT a.Id FROM First_Table a LEFT JOIN Second_Table b ON a.Id = b.Id WHERE b.Id IS NULL;
Lưu ý: NOT IN có vấn đề nếu subquery trả về NULL. Nên dùng NOT EXISTS hoặc LEFT JOIN ... IS NULL cho an toàn.