我想检查子查询的结果是否与数字列表相交。
我正在尝试使用这个查询
SELECT * FROM my_table mt WHERE
EXISTS (
(SELECT at.id FROM another_table at where at.some_id = mt.id)
INTERSECT
(1,2,3,4)
)
(1, 2, 3, 4)
将在运行时由应用程序替换。
但是我得到了错误:
ERROR: syntax error at or near "1"
我该如何解决这个问题?
我正在使用 PostgreSQL
。
最佳答案
您可以使用 VALUES
生成一个由 INTERSECT
使用的“常量表”:
SELECT * FROM my_table mt WHERE
EXISTS (
(SELECT at.id FROM another_table at where at.some_id = mt.id)
INTERSECT VALUES (1),(2),(3),(4)
)
关于SQL。检查2个列表是否相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953046/