如何检查 table 中的数据集中是否存在所有数组元素
How to check if all array elements exists in set of data in table
我有整数值数组:[1,2,3,4,6,52]
我想检查这组整数值是否存在于 postgres table 集合中
Table 并设置结构:
在此示例中,我的数组值存在于第二个 table 集合中。
我该如何解决这个问题?
如果你想要每个 door_id
的一行,其 available_id
的集合与给定数组完全相同,你可以像这样使用聚合:
select door_id
from mytable
group by door_id
having array_agg(available_id order by available_id) = array[1,2,3,4,6,52]
如果您不介意包含子集:
having array_agg(available_id order by available_id) @> array[1,2,3,4,6,52]
如果你想要所有对应的行,使用window聚合:
select *
from (
select t.*,
array_agg(available_id order by available_id) over(partition by door_id) arr
from mytable t
) t
where arr @> array[1,2,3,4,6,52]
我有整数值数组:[1,2,3,4,6,52]
我想检查这组整数值是否存在于 postgres table 集合中
Table 并设置结构:
在此示例中,我的数组值存在于第二个 table 集合中。
我该如何解决这个问题?
如果你想要每个 door_id
的一行,其 available_id
的集合与给定数组完全相同,你可以像这样使用聚合:
select door_id
from mytable
group by door_id
having array_agg(available_id order by available_id) = array[1,2,3,4,6,52]
如果您不介意包含子集:
having array_agg(available_id order by available_id) @> array[1,2,3,4,6,52]
如果你想要所有对应的行,使用window聚合:
select *
from (
select t.*,
array_agg(available_id order by available_id) over(partition by door_id) arr
from mytable t
) t
where arr @> array[1,2,3,4,6,52]