MySQL 使用GROUP_CONCAT实现统计报表

要写一个sql,统计某写游戏玩家级别最高的角色名,首先看一个某个玩家的所有角色

tudou@gyyx
select a.account,a.`name`,a.`LEVEL` from mdb.char_info a
inner join test.pushspread b on b.account = a.account
GROUP BY a.account,a.`name`

结果,因为使用的是生产环境数据,所以改变了连接的字符集,造成乱码还请大家理解大笑


level 34行数据就是目标数据

灵机一动写了个sql,结果却为空:

tudou@gyyx
select a.account,a.`name`,a.`LEVEL`,MAX(a.`LEVEL`) t from mdb.char_info a
inner join test.pushspread b on b.account = a.account
GROUP BY a.account
HAVING a.`LEVEL`= t


没辙还是请出GROUP_CONCAT函数吧

tudou@gyyx
SELECT a.account,SUBSTRING_INDEX(GROUP_CONCAT(a.name ORDER BY a.level DESC),',',1) AS name,MAX(a.level) 
FROM mdb.char_info a 
INNER JOIN test.pushspread b ON b.account=a.account 
GROUP BY a.account;

ok,得到结果


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值