首页 > 解决方案 > 检查数组元素是否多次出现

问题描述

有没有办法检查整数数组中是否存在多次出现的任何元素?如果存在冗余或违规元素列表,则布尔值 False 都可以。

标签: sqlarrayspostgresqlunnest

解决方案


unnest()数组,然后使用GROUP BYand HAVINGwithcount()过滤出现多次的值。

SELECT un.n
       FROM unnest('{1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10}'::integer[]) un (n)
       GROUP BY un.n
       HAVING count(*) > 1;

要获得布尔值,您可以EXISTS在子查询中使用上述内容。

SELECT EXISTS (SELECT un.n
                      FROM unnest('{1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10}'::integer[]) un (n)
                      GROUP BY un.n
                      HAVING count(*) > 1);

推荐阅读