sql - 在 PostgreSQL 中缩写列表

标签 sql postgresql amazon-redshift

我怎样才能缩写一个列表,这样

WHERE id IN ('8893171511',

'8891227609',
'8884577292',
'886790275X',
.
.
.)

成为

WHERE id IN (name of a group/list) 

最佳答案

该列表确实必须出现在某个地方。从代码可维护和可重用的角度来看,您可以在 CTE 中表示列表:

WITH id_list AS (
    SELECT '8893171511' AS id UNION ALL
    SELECT '8891227609' UNION ALL
    SELECT '8884577292' UNION ALL
    SELECT '886790275X'
)

SELECT *
FROM yourTable
WHERE id IN (SELECT id FROM cte);

如果您一直需要这样做,那么也许 CTE 应该成为您数据库中某处的真实表。

编辑:根据 Horse 的建议,我们可以将 CTE 整理为以下内容:

WITH id_list (id) AS (
VALUES
    ('8893171511'),
    ('8891227609'),
    ('8884577292'),
    ('886790275X')
)

关于sql - 在 PostgreSQL 中缩写列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51931991/

相关文章:

mysql - SQL表中的用户ID号自动递增

java - 即使使用 case 语句,SUM 结果值也会重复

sql - 根据多个分隔符拆分记录

database - PostgreSQL : Find Postgresql database file on another drive and restore it

amazon-redshift - 我们可以通过linux shell脚本无密码连接amazon redshift吗?

amazon-redshift - 有没有办法通过 Redshift 来描述外部/频谱表?

mysql - 根据另一个列 ID 选择列的最大值

SQL Server 单查询内存使用情况

sql - PostgreSQL 查询未按预期返回结果

amazon-redshift - Redshift 查询每日生成的表