gpt4 book ai didi

mysql - 两个不同表上的 GROUP_CONCAT

转载 作者:行者123 更新时间:2023-11-29 11:57:48 27 4
gpt4 key购买 nike

我有三个表:

工作人员

id  name
1 Alex
2 John
3 Peter

员工角色

id  role_name
1 Barber
2 Driver

分配的角色

id  staff_id  role_id
1 1 1
2 1 2
3 2 1
4 3 2

我想得到输出。像:

name   roles
Alex [{'id':'1','role_name':'Barber'},{'id':'2','role_name':'Driver'}]
John [{'id':'1','role_name':'Barber'}]
Peter [{'id':'2','role_name':'Driver'}]

我正在做:

SELECT
staff.name,
GROUP_CONCAT(DISTINCT assigned_roles.role_id) as roles
FROM staff
LEFT JOIN assigned_roles
ON assigned_roles.staff_id = staff.id
LEFT JOIN roles
ON roles.id = assigned_roles.role_id
GROUP BY
staff.id

但是如何将角色名称添加到 GROUP_CONCAT 以获得我想要的输出?

最佳答案

您可以像这样构造最终结果:

SELECT s.name,
CONCAT('[',
GROUP_CONCAT(DISTINCT '{''id'':''', ar.role_id, ''',''role_name'':''', r.role_name, '''}'),
']')
FROM staff s LEFT JOIN
assigned_roles ar
ON ar.staff_id = s.id LEFT JOIN
roles r
ON r.id = ar.role_id
GROUP BY s.id;

所有这些单引号和不寻常的字符可能存在拼写错误。

关于mysql - 两个不同表上的 GROUP_CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927433/

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