group_concat 排序

问题:数据库表group_concat_table有三个字段sex,score,school,现在java后台获取到的值为:

String sex = "0,1,2";
String score = "90,91,92";
String school = "a";


现在这三个字段的值要使用全匹配的方式插入到数据库中,即(0,90,a),(0,91,a),(0,92,a),(1,90,a),(1,91,a),(1,92,a),(2,90,a),(2,91,a),(2,92,a)这9种组合,在数据库的存在形式为:



现在我需要将这些数据拼接成一条数据(存入数据库之前的样子),即sex=0,1,2;score=90,91,92;school=a如下图:


我之前写的sql没有考虑到group_concat的排序问题,导致的group_concat时数据错位了,如下图:


很明显,现在score列的值在group_concat之后不是我想要的值,这样会造成对sex进行group_concat时产生多条数据,如下:


这明显跟我想要的结果有出入,这就是因为我们在将group_concat的结果作为order by的条件时没有对之前的group_concat排序造成的,改进后的sql语句如下:

SELECT sex,GROUP_CONCAT(score ORDER BY score) as score,school FROM group_concat_table
GROUP BY sex,school

注意:一定要在group_concat内部进行排序!

效果如下:


这样就可以产生预期的效果了。



以上是个人的见解,如有错误,欢迎指正


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值