MySQL
的group_concat
函数能将字段的值以特定符号相连。
比如现在有user
,role
,user_role
三张表,简单的多对多关系。现在要查出一个用户所有角色名称
,并且角色名称
以/
相连,展示形式为AAA/BBB/CCC
。
使用group_concat
函数能达到这一效果,而不需要程序去处理。
先看看用户对应的角色:
select ur.user_id,ur.role_id,r.role_name
from sys_user_role ur
join sys_role r
on r.role_id = ur.role_id
where r.del_flag = '0' order by ur.user_id;
结果如图:

使用group_concat
将用户的角色用/
连起来:
select ur.user_id, group_concat(DISTINCT r.role_name separator '/') as roleNames from sys_user_role ur
join sys_role r
on r.role_id=ur.role_id
where r.del_flag='0' group by ur.user_id order by ur.user_id;
效果如下:

注意理解 distinct
,group by
在SQL
语句中的作用。
网友评论