You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从array类型列提取唯一值,生成单列或合并数组结果?

数组去重的两种实现方案

原数据表

假设我们有如下表结构及数据:

CREATE TABLE test_arr (arrs INT[]);
INSERT INTO test_arr VALUES
('{10000,10000,10000,10000}'),
('{100,200,300}'),
('{400,500,600}'),
('{100,200,600}');

结果一:将所有唯一值展开为单行记录

通过unnest拆分数组为单行值,结合DISTINCT去重后排序:

SELECT DISTINCT unnest(arrs) AS uniques
FROM test_arr
ORDER BY uniques;

执行后会得到每个唯一值单独一行的结果集。


结果二:将所有唯一值合并为单个数组

可以通过子查询先获取去重后的单个值,再用array_agg聚合为数组:

SELECT array_agg(uniques ORDER BY uniques) AS arrUniques
FROM (
    SELECT DISTINCT unnest(arrs) AS uniques
    FROM test_arr
) AS sub_query;

或者直接在聚合函数中处理:

SELECT array_agg(DISTINCT unnest(arrs) ORDER BY unnest(arrs)) AS arrUniques
FROM test_arr;

两种写法都会得到包含所有唯一值的单个数组结果。


内容的提问来源于stack exchange,提问作者user23025019

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:33:23