没用一对多前的查询语句效果如图:

期望效果如图:


可以看到把重复的数据合并成一行,实现一对多的效果。

原先效果:

SELECT u*,r.name AS rname
FROM sys_user u  left join sys_role r on u.pk_role=r.pk_role 
WHERE  1=1 and ifnull(u.jl_is_del,0)=0 and u.pk_corp='1' 

加了一对多语句后效果:

SELECT u*,GROUP_CONCAT(r.name) AS rname --将一列的多个值合并成一个
FROM sys_user u  left join sys_role r on u.pk_role=r.pk_role 
WHERE  1=1 and ifnull(u.jl_is_del,0)=0 and u.pk_corp='ba28c1ae446b4c67838a34e7b7441017' 
GROUP BY u.pk_user --根据一个或多个列对结果集进行分组

具体用法:

select GROUP_CONCAT(A.title) as tablename from tmp A;      --默认的逗号分隔

select GROUP_CONCAT(A.title SEPARATOR  ' ') as tablename from tmp A;   --用空格分隔
Logo

更多推荐