mysql 根据某个字段将多条记录的某个字段拼接成一个字段

本文详细介绍了如何使用SQL查询从用户表与角色表中获取用户及其关联的角色信息,包括未合并与合并情况下的查询方法。通过INNER JOIN实现多表关联,并使用GROUP_CONCAT进行角色名的合并。

未合并情况

 

SELECT

a.id,

b.name

AS "role"

FROM

sys_user a

INNER JOIN sys_user_role c ON a.id=c.user_id

INNER JOIN sys_role b ON b.id =c.role_id

WHERE

a.del_flag=0

AND

b.del_flag=0

 

结果

 

id                  role

 

1                   系统管理员

1                         测试角色

2                      系统管理员

2                    测试角色

9                         系统管理员

9                         测试角色

d11828f3dbf148829287aeb637cbf6ec 系统管理员

d11828f3dbf148829287aeb637cbf6ec 测试角色

fe55ff534d23453ab66fda0912f6018d  系统管理员

fe55ff534d23453ab66fda0912f6018d  测试角色

 

合并情况

 

SELECT id,GROUP_CONCAT(role) AS "rolelist" FROM

(SELECT

a.id,

b.name

AS "role"

FROM

sys_user a

INNER JOIN sys_user_role c ON a.id=c.user_id

INNER JOIN sys_role b ON b.id =c.role_id

WHERE

a.del_flag=0

AND

b.del_flag=0)d

GROUP BY id

 

结果

 

id                       rolelist

 

1                    测试角色,系统管理员

2                           测试角色,系统管理员

9                           测试角色,系统管理员

d11828f3dbf148829287aeb637cbf6ec 测试角色,系统管理员

fe55ff534d23453ab66fda0912f6018d  测试角色,系统管理员

 

或者

 

select a.id,group_concat(b.name) AS rolelist

from sys_user a

inner join sys_user_role c on a.id = c.user_id

inner join sys_role b on b.id = c.role_id

 

WHERE

a.del_flag=0

AND

b.del_flag=0

group by a.id

 

结果也一样

转载于:https://www.cnblogs.com/panchanggui/p/9888210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值