gpt4 book ai didi

sql - Postgresql - 将连接产生的列作为单个 json 列返回

转载 作者:行者123 更新时间:2023-11-29 14:30:11 26 4
gpt4 key购买 nike

usersroles 表之间存在多对多关系(典型用例)。它们使用 user_role 表关联在一起。我执行以下查询:

select 
u.id, u.first_name, u.last_name, u.middle_name,
u.email_address, r.id, r.role_code
from
master.user u
left join
master.user_role ur
on ur.user_id = u.id
and ur.is_void = false
left join
master.role r
on r.id = ur.role_id
and r.is_void = false
where u.id = 7 and u.is_void = false

这导致

7;"Multi Role";"First";"Middle";"mult@gmail.com";1;"ST"
7;"Multi Role";"First";"Middle";"mult@gmail.com";2;"TC"

如何将角色聚合到一个 json 或数组列中,以便结果为:

7;"Multi Role";"First";"Middle";"mult@gmail.com";[{id: 1, role_code : ST}, {id: 2, role_code: TC}]

最佳答案

demo: db<>fiddle

SELECT 
id,
first_name,
last_name,
middle_name,
email_address,
jsonb_agg(
jsonb_build_object('id', r_id, 'role_code', role_code)
)
FROM
result_table
GROUP BY id, first_name, last_name, middle_name, email_address
  1. jsonb_build_object创建一个json对象,Postgres JSON functions
  2. 使用 jsonb_agg 聚合 json 对象,Postgres aggregate functions

当然你也可以使用类型json代替jsonbPostgres JSON types

关于sql - Postgresql - 将连接产生的列作为单个 json 列返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53018909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com