簡體   English   中英

需要過濾 postgres 中記錄共享一個公共 id 但任何一條都未能通過子查詢的所有行

[英]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 = truestatus = foo ,則應過濾具有相同group_id的所有記錄。 如果group_id是 null,這是可能的,我想保留這些記錄,無論是否reversedstatus

我得到的最接近的是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM