我正在尝试使用NOT IN子句限制选择。
这就是我想要做的事情:
SELECT name,id
from "Schemas"."Paths"
where id not in(
select parent from "Schemas"."Paths"
)
但这给了我一张空桌子。
我在这张桌子上有824行,当我尝试这个时:
SELECT name,id
from "Schemas"."Paths"
where id in(
select parent from "Schemas"."Paths"
)
我有182行表。
我错过了什么,但是什么?
答案 0 :(得分:0)
您的Paths
中至少有一个空父母。根据您打算如何使用父母,可以直接过滤掉这些内容(例如使用WHERE parent IS NOT NULL
),也可以使用COALESCE
之类的投影将这些内容映射到确实存在的内容:
SELECT name,id
from Paths
where id not in (
select COALESCE(parent, 0) from Paths
);
SqlFiddle显示当序列包含null时NOT IN
如何返回零行。