Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我遇到了一个奇怪的问题,使用notin和don'对PostgreSQL数据库运行查询;我不明白为什么它没有';行不通_Sql_Postgresql_Subquery_Notin - Fatal编程技术网

我遇到了一个奇怪的问题,使用notin和don'对PostgreSQL数据库运行查询;我不明白为什么它没有';行不通

我遇到了一个奇怪的问题,使用notin和don'对PostgreSQL数据库运行查询;我不明白为什么它没有';行不通,sql,postgresql,subquery,notin,Sql,Postgresql,Subquery,Notin,我有一个带有id和parent_id列的分层表,parent_id有一个id列的外键。每行只能有一个父行,但多行可以绑定到同一父行。我想检索所有没有子项的行 我尝试了以下查询 SELECT * FROM table WHERE id NOT IN ( SELECT DISTINCT(parent_id) FROM table ) 这返回了0行。如果我将不在中更改为在中,它将正确返回有子行的行(其他行通过其父id与之关联) 我最终让它工作了: SELECT * FROM tabl

我有一个带有id和parent_id列的分层表,parent_id有一个id列的外键。每行只能有一个父行,但多行可以绑定到同一父行。我想检索所有没有子项的行

我尝试了以下查询

SELECT *
FROM table
WHERE id NOT IN (
    SELECT DISTINCT(parent_id)
    FROM table
)
这返回了0行。如果我将不在中更改为中,它将正确返回有子行的行(其他行通过其父id与之关联)

我最终让它工作了:

SELECT *
FROM table
WHERE id NOT IN(
    SELECT id
    FROM table
    WHERE id IN (
        SELECT DISTINCT(parent_id)
        FROM table
    )
)
但我不明白为什么第一个查询不起作用?有人能帮我弄明白这里发生了什么吗?我不明白不在应该如何工作吗?

试试看

SELECT *
FROM table
WHERE id NOT IN (
    SELECT DISTINCT(parent_id)
    FROM table
    WHERE parent_id IS NOT NULL
)
例如:

with t(x) as (values(1),(2))
select 3
where 3 not in (select x from t);

┌──────────┐
│ ?column? │
├──────────┤
│        3 │
└──────────┘
但是

这是因为DBMS无法决定是否为
id=null
(结果是
undefined

您可以如上所述或使用
not exists
修复它:

with t(x) as (values(1),(2),(null))
select 3
where not exists (select x from t where x = 3);

┌──────────┐
│ ?column? │
├──────────┤
│        3 │
└──────────┘
with t(x) as (values(1),(2),(null))
select 3
where not exists (select x from t where x = 3);

┌──────────┐
│ ?column? │
├──────────┤
│        3 │
└──────────┘