我有两张桌子parent和children. parent.mopidandchildren.mopid是两个表之间的连接。我将如何编写SELECT最终结果只显示没有子记录的父记录?
4460 次
3 回答
3
如果你有很多行, aLEFT JOIN通常比 a 快NOT IN。但并非总是如此——这取决于数据,所以请尝试这个答案和来自@aktrazer 的答案,看看哪个最适合你。
SELECT parent.*
FROM parent
LEFT JOIN children ON parent.mopid = children.mopid
WHERE children.mopid IS NULL
如果 , 没有children一行mopid,parent.mopid将有一个值,但child.mopid将为空。
于 2013-06-14T17:35:07.890 回答
3
SELECT * from parent p where NOT EXISTS
( select mopid from children c where p.mopid = c.mopid)
这也应该处理空值
此链接将向您解释 NOT IN 和 NOT EXISTS 之间的区别
于 2013-06-14T17:39:09.753 回答
2
Use the NOT IN function:
SELECT * from parent
where parent.mopid NOT IN (SELECT mopid from children)
This will return all rows from the parent table that do not have a corresponding mopid in the childrens table.
于 2013-06-14T17:31:36.863 回答