sql - 如何根据来自同一个表的唯一值加入两次在 postgres 中创建数组?
问题描述
我有一个查询,我加入了同一张表的两次,即:
left join tag tag1 [...]
left join tag tag2 [...]
我想查询一个名为tag
的列,其中我将拥有两个表(tag1
,tag2
)中的唯一值。
示例:
现在我可以从每一列中选择唯一值,jsonb_agg(distinct tag_name)
并且在我的查询中我有两列:
tag1 | tag2
[Sport, Music] | [Sport, Games]
而且我希望有一列具有独特的值tag1
,tag2
例如:
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
推荐阅读
- docker - Docker:使用 buildx 支持多种架构,我需要在父镜像上使用它吗?
- reinforced-typings - Reinforced.Typings 正在 MacOS 上寻找 dotnet.exe,因此无法运行
- debugging - 如何生成仅在失败时才详细的 make 构建
- javascript - 从将所有文件转换为 es6 的项目中删除 Typescript
- python - Panda Pivot 功能无法正常工作
- razor - SfGrid RowSelection 事件处理重新加载数据
- python - 如何从 Django“Choices”中获取值并通过下拉元素将它们作为 Axios 请求发送到 React 前端?
- python - 使用 keras 预处理后绘制图像
- graphql - GraphQL:在所有解析器之间共享上下文
- linux - 安装pdftk alpine linux时出现不可满足的约束错误