我在postgres有一张table,看起来像这样:
table
------
id varchar(10)
reversed boolean
status varchar(3)
group_id varchar(10)
算法是如果任何一条记录 reversed = true
或者 status = foo
,所有具有相同 group_id
应进行筛选。如果 group_id
是空的,这是可能的,我想保留这些记录,不管 reversed
或者 status
我得到的最接近的是 NOT IN
子查询:
select *
from
table
where
group_id
not in (
select
group_id
from
records
where
reversed = true
or
status = foo
)
但是 NOT IN
也自然过滤空值,我不想要。我们也尝试了not exists和inner连接,但是还没有得到正确的语法。任何帮助都将不胜感激!
1条答案
按热度按时间pgpifvop1#
通过添加
group_id is null
在where
条件,