MySQL语句 关联两表 合并重复列值 (一对多合并查询)

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

期望效果如图:

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

原先效果:

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;   --用空格分隔


原文:https://blog.csdn.net/qq_41737716/article/details/80362182 
 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值