我有两张桌子parent
和children
. parent.mopid
andchildren.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 回答