首页 > 解决方案 > 具有多个值的 WHERE IN 子句

问题描述

当列表中的任何值出现在表中的数组中时,我正在尝试从表中选择项目。

list_id_array 是一个 id 数组,用于标识项目包含在哪些列表中。整数是我想与每一行的数组进行比较的单独列表 id,当任何整数包含在 list_id_array 中时匹配。

这是一个具有一个值的工作示例:

SELECT *
FROM my_table
WHERE 
1163650 IN
UNNEST(list_id_array)

这可以按需要工作。但是,我想检查多个 id。例如,除了 1163650 之外,我可能还想检查 654321 和 123456 并选择包含 list_id_array 中任何这些值的项目。

因此,一个不起作用的示例可能更好地描述了我正在寻找的内容:

SELECT *
FROM my_table
WHERE
/*any of the below*/
(1163650, 123456, 654321) IN
UNNEST(list_id_array)

我怎样才能做到这一点?我进行了自己的搜索,但在 IN 之后而不是之前找到不引用参数中多个值的任何内容时遇到了麻烦。

标签: sqlpostgresql

解决方案


使用重叠运算符

where array[1163650, 123456, 654321] && list_id_array

推荐阅读