Đối với câu hỏi đầu tiên của bạn có có ít nhất ba phương pháp phổ biến để lựa chọn:
- NOT EXISTS
- NOT IN
- LEFT JOIN
SQL trông như thế này:
SELECT * FROM TableA WHERE NOT EXISTS (
SELECT NULL
FROM TableB
WHERE TableB.ID = TableA.ID
)
SELECT * FROM TableA WHERE ID NOT IN (
SELECT ID FROM TableB
)
SELECT TableA.* FROM TableA
LEFT JOIN TableB
ON TableA.ID = TableB.ID
WHERE TableB.ID IS NULL
Tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng, hiệu suất của mỗi thể khác nhau. Đối với SQL Server (không phải cột trống):
NOT EXISTS AND NOT IN predicates là cách tốt nhất để tìm kiếm giá trị bị thiếu, miễn là cả hai cột được đề cập là NOT NULL.
Nguồn
2010-06-04 11:18:26
Các công trình lớn, nhờ –
bài viết tốt đẹp! cảm ơn rất nhiều .. – Li3ro