[英]Need to filter all rows in postgres where records share a common id but any one fails to pass a subquery
我在 Postgres 中有一個看起來像這樣的表:
table
------
id varchar(10)
reversed boolean
status varchar(3)
group_id varchar(10)
該算法是如果任何單個記錄已reversed = true
或status = foo
,則應過濾具有相同group_id
的所有記錄。 如果group_id
是 null,這是可能的,我想保留這些記錄,無論是否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
也會自然過濾我不想要的空值。 也嘗試過不存在和內部連接,但還沒有得到正確的語法。 任何幫助將不勝感激!
通過在where
條件下添加group_id is null
來嘗試以下操作,
select *
from table
where group_id not in
(
select
group_id
from records
where (reversed = true or status = foo)
)
or group_id is null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.