我想知道是否可以使用IN子句进行查询,其中的选项类似于子句,例如,我有一个现有的SQL,它返回与我预期相同的结果,这似乎是一种迂回的方法.

SELECT *
FROM pg_stat_activity
WHERE application_name NOT LIKE '%psql%'
AND (current_timestamp - state_change) > INTERVAL '30 minutes'
AND state IN (
    SELECT state
    FROM pg_stat_activity
    WHERE state LIKE '%idle%'
    OR state LIKE '%disabled%'
)

有没有办法用类似于

SELECT *
FROM pg_stat_activity
WHERE application_name NOT LIKE '%psql%'
AND (current_timestamp - state_change) > INTERVAL '30 minutes'
AND state IN ('%idle%', '%disabled%')

推荐答案

使用SIMILAR TO而不是LIKE

AND state SIMILAR TO '%(idle|disabled)%'

https://www.postgresql.org/docs/9.0/static/functions-matching.html

Database相关问答推荐

如何在 Angular 中使用 IndexedDB?

任何用于存储过程的静态代码分析工具?

H2 - 如何截断(truncate)所有表?

MongoDB是面向对象的吗?

带有字符串列的 SQL 之间的子句

如何将 MySQL 5.5.40 升级到 MySQL 5.7

按纬度/经度进行半径搜索

用于存储年份的 MySQL 类型:Smallint 或 Varchar 或 Date?

matlab 数据文件到 pandas DataFrame

内存数据库和磁盘内存数据库的区别

将实体框架中的字符串列映射到枚举

xtradb vs innodb

数据库中一致且全面的地址存储的最佳实践

不可重复读与脏读的区别

Hibernate如何连接多个数据库

如何一次插入1000行

游戏中使用什么样的数据库?

数据库查询时间复杂度

NoSQL 数据库是否使用或需要索引?

从 SQLAlchemy 中的文件执行 SQL