首页 > 解决方案 > 如何从 Arrays PostgreSQL 的列中获取唯一值

问题描述

我正在尝试提取一列数组的 DISTINCT 值。

例如,如果我有两行:

{jonathan,michelle}
{jonathan,michael}

输出应该是:

{jonathan,michelle,michael}

输出可以是数组或“虚拟列”,这不是问题。

标签: sqlarrayspostgresqlgroup-bydistinct

解决方案


您可以取消嵌套和聚合,忽略重复项:

select array_agg(distinct u.val) new_ar
from mytable t
cross join lateral unnest(t.ar) as u(val)

请注意,这并不能保证元素在最终数组中出现的顺序(有选项,但您没有在这方面指定您想要的内容)。

DB Fiddle 上的演示

| new_ar |
| :---------------------------- |
| {乔纳森,迈克尔,米歇尔} |

推荐阅读