我有一个查询,我想向其中添加一些日志,以删除当我向JOIN中添加一个表时成功匹配的结果。
我现在通过附加的WHERE IN语句来完成此操作:
SELECT blah blah FROM donation
WHERE donation.id NOT IN (SELECT donation_id FROM donation_relation)
我只是担心,当表开始增长时,从子查询中的donation_relation表中选择所有ID字段将开始拖动。使用JOIN进行此排除的更有效方法(如果存在)是什么?这两个表可以在donation.id和donation_relation.donation_id上联接
谢谢!
LEFT OUTER JOIN
选择:
SELECT blah blah
FROM donation
LEFT JOIN donation_relation ON donation.id = donation_relation.donation_id
WHERE donation_relation.donation_id IS NULL;
可能更快,尤其是在使用MySQL时。
EXISTS
版本:
SELECT blah blah FROM donation
WHERE NOT EXISTS (SELECT donation_id FROM donation_relation
WHERE donation.id = donation_relation.donation_id )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句