如何在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]

如果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

最新更新