Bạn có thể sử dụng NOT EXISTS
SELECT a.id, a.name
FROM A
WHERE NOT EXISTS
(
SELECT 1 FROM B
WHERE b.A = a.id AND b.cond = 'X'
)
Tuy nhiên, tôi luôn quên rằng MySql là rdbms (?) Duy nhất có vấn đề để tối ưu hóa một EXISTS
/ NOT EXISTS
. Vì vậy, sẽ hiệu quả hơn một chút nếu sử dụng LEFT JOIN
cách tiếp cận.
http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/
Trong MS SQL-Server, tốt hơn nên sử dụng NOT EXISTS
.
http://sqlperformance.com/2012/12 / t-sql-queries / left-anti-semi-join