我有下一张x号桌:

id | type_id | element_id
-------------------------
1  |    1    |     1 
2  |    1    |     2
3  |    1    |     3
4  |    2    |     1
5  |    3    |     1
6  |    4    |     2
7  |    5    |     3

我需要获得所有满足条件element_id != 1的类型ID,换句话说,如何获得下一个类型ID:[4,5]?

如果我只做SELECT type_id FROM x WHERE element_id != 1,我就会得到[1,1,4,5].

推荐答案

您可以try 在HAVING中使用条件聚合函数,该函数不包含任何来自类型_id的element_id = 1

SELECT type_id 
FROM x
GROUP BY type_id 
HAVING COUNT(CASE WHEN element_id = 1 THEN 1 END) = 0 

sqlfiddle

或者使用带有聚合函数的filter子句

SELECT type_id 
FROM x
GROUP BY type_id 
HAVING COUNT(*) FILTER (WHERE element_id = 1 ) = 0

Postgresql相关问答推荐

Trunc函数不删除小数

如何在PostgreSQL中正确删除数据库

PostgreSQL临时文件的误解

INSERT 语句返回策略违规(USING 表达式)

我在try 访问我的数据库表时在 postgresql 中收到 aclcheck_error 错误

如何在 PostgreSQL 的回归测试中测试 TYPE 发送和接收函数

连接 Supbase Postgresql 数据库时,Stepzen Graphiql 资源管理器中的主机名解析错误

如何在 postgresql 中创建一个空的 JSON 对象?

postgresql中的外键可以被触发器违反

Postgres/psycopg2 - 插入字符串数组

升级到 OSX Mavericks 后修复 postgresql

错误:syntax error at or near "user"

当记录包含 json 或字符串的混合时,如何防止 Postgres 中的invalid input syntax for type json

将 csv 文件中存在的 NULL 值复制到 postgres

大型查询后 psycopg2 泄漏内存

有没有办法确保 WHERE 子句在 DISTINCT 之后发生?

查询 JSON 列中的数组元素

在 pg_restore 期间排除表

在 Flask-sqlalchemy 和 Postgresql 中使用 JSON 类型

Postgresql 用随机值更新每一行