MySQL group_concat使用

MySQLgroup_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;

结果如图:

1.png

使用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;

效果如下:

2.png

注意理解 distinct,group bySQL语句中的作用。

你可能感兴趣的:(MySQL group_concat使用)