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种组合,在数据库的存在形式为:

group_concat 排序_第1张图片

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


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

group_concat 排序_第2张图片

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

group_concat 排序_第3张图片

这明显跟我想要的结果有出入,这就是因为我们在将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内部进行排序!

效果如下:


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



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


你可能感兴趣的:(group_concat 排序)