有一个SQL查询如下:
质询A:
SELECT
user,
color_id_array
FROM
relation;
结果A:
user, color_id_array
john, [1, 2]
bob, [2, 2, 2]
amy, [2, 2, 3]
质询B:
SELECT
inf_name,
inf_code
FROM
infomation;
结果B:
inf_code, inf_name
1, red
2, green
3, blue
结果A中的color_id_array是一个允许重复元素的数组。如何创建一个查询来获得以下输出?使用的DB是PostgreSQL。
预期输出:
user, color_id_array, color_name_array
john, [1, 2], ["red", "green"]
bob, [2, 2, 2], ["green", "green", "green"]
amy, [2, 2, 3], ["green", "green", "blue"]
1条答案
按热度按时间mnemlml81#
您可以取消ID数组的嵌套(同时跟踪它们的原始位置),使用连接来获取信息表,然后再次聚合:
group by
子句应该包含relation
表的主键(我假设为user
)。| 乌瑟尔|颜色标识数组|颜色名称数组|
| - ------|- ------|- ------|
| 艾米|{二、二、三}|{绿色,绿色,蓝色}|
| 摆锤|{二、二、二}|{绿色,绿色,绿色}|
| 约翰|{1、2}|{红色,绿色}|
fiddle