我有两个数组X,Y。X=[a,b,c]
和Y=[a,a,b,b,b,c,d,d,e,e,e]
。我想编写一个查询,它将返回Y中与X中元素匹配的元素的数量(有重复项)。在这种情况下,输出应该是[a,a,b,b,b,c]
,我需要这个数组的长度是6。我知道array_intersect将返回没有重复项。
SELECT array_intersect([a,b,c],[a,a,b,b,b,c,d,d,e,e,e])
结果是
[a,b,c]
但是我想要的输出是
[a,a,b,b,b,c]
这可以通过filter
和contains
实现:
SELECT filter(array['a','a','b','b','b','c','d','d'], el -> contains(array['a','b','c'], el))
输出:
<表类>_col0 tbody><<tr>[a, a, b, b, b, c) 表类>