合并来自两个不同列的两个对象数组,以在postgresql中创建唯一且非空对象的新数组

时间:2018-05-31 06:19:01

标签: sql arrays postgresql merge

我有一个返回3列的结果集,其中一列是varchar,两列是数组,现在我需要合并数组列来创建一个非空的唯一元素的新数组。我尝试了不同的选项,他们正在工作,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以将数组和unnest连接成行。然后,您可以使用distinct获取唯一行,并使用array_agg将它们组合回数组:

select  id
,       array_agg(nr)
from    (
        select  distinct id
        ,       unnest(array[col1] || col2 || col3) nr
        from    t1
        ) sub
group by
        id

Example at SQL Fiddle.

答案 1 :(得分:0)

感谢你们的建议。我发现解决方案array_cat函数对我有用。