首页 > 解决方案 > 如何根据来自同一个表的唯一值加入两次在 postgres 中创建数组?

问题描述

我有一个查询,我加入了同一张表的两次,即:

left join tag tag1 [...]
left join tag tag2 [...]

我想查询一个名为tag的列,其中我将拥有两个表(tag1tag2)中的唯一值。

示例:
现在我可以从每一列中选择唯一值,jsonb_agg(distinct tag_name)并且在我的查询中我有两列:

tag1            | tag2
[Sport, Music]  | [Sport, Games]

而且我希望有一列具有独特的值tag1tag2例如:

tag
[Sport, Music, Games]

标签: sqlpostgresqldistinctjsonbarray-agg

解决方案


如果 tag1 和 tag2 是具有相同列 tag_name 的两个表,那么您可以使用UNION 它来合并两个表中的值,同时避免重复:

SELECT jsonb_agg(r.tag_name)
FROM
(
SELECT tag_name
  FROM tag1
UNION
SELECT tag_name
  FROM tag2
) AS r

推荐阅读