Liệt kê dữ liệu chỉ có ở bảng table1 mà không có ở bảng table2 trong MySQL
Hướng dẫn cách viết câu lệnh MySQL để liệt kê các dữ liệu chỉ có trong bảng table1
mà không có trong bảng table2
. Câu lệnh SQL này giúp tìm các bản ghi không khớp giữa hai bảng dựa trên khóa liên kết.
SELECT t1.id, t1.date
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.table1_id
WHERE t2.table1_id IS NULL;
Giải thích chi tiết:
-
LEFT JOIN
: Kết hợp bảngtable1
với bảngtable2
dựa trên điều kiệnt1.id = t2.table1_id
.LEFT JOIN
đảm bảo rằng tất cả các hàng từ bảngtable1
được giữ lại, bất kể có khớp với bảngtable2
hay không. -
WHERE t2.table1_id IS NULL
: Lọc các hàng mà không có bản ghi tương ứng trong bảngtable2
. Điều này có nghĩa là chỉ lấy các bản ghi từ bảngtable1
mà không có tương ứng trong bảngtable2
.
Phiên bản MySQL:
Câu lệnh SQL này có thể chạy trên các phiên bản MySQL từ 5.0 trở lên, vì các phép toán cơ bản như LEFT JOIN
và điều kiện IS NULL
được hỗ trợ từ các phiên bản này.