sql - 需要过滤 postgres 中记录共享一个公共 id 但任何一条都未能通过子查询的所有行
问题描述
我在 Postgres 中有一个看起来像这样的表:
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
也会自然过滤我不想要的空值。也尝试过不存在和内部连接,但还没有得到正确的语法。任何帮助将不胜感激!
解决方案
通过添加条件尝试以下操作group_id is null
,where
select *
from table
where group_id not in
(
select
group_id
from records
where (reversed = true or status = foo)
)
or group_id is null
推荐阅读
- web-scraping - BeautifulSoup 查找特定字符串
- android - 不允许用户拒绝应用权限
- javascript - 滑块不会自动加载
- android - 即使应用程序关闭,BroadcastReceiver 也能正常工作
- c# - Microsoft Word:Normal.dotm,无法打开现有文件:在 c# 中使用 Microsoft.Office.Interop.Word
- ruby-on-rails - 为什么当我尝试使用用户输入创建一个 Datetime 对象作为参数时说无效日期
- c# - Unity TCP/IP 服务器只接受本地连接。同一台 PC 上的相同代码而不是 Unity 可以正常工作
- ios - NSDictionary 创建错误,某些键没有引号
- r - 在主标题上方放置图例
- swift - 无法通过另一个视图控制器 Swift 停止计时器