问题:数据库表group_concat_table有三个字段sex,score,school,现在java后台获取到的值为:
String sex = "0,1,2";
String score = "90,91,92";
String school = "a";
现在我需要将这些数据拼接成一条数据(存入数据库之前的样子),即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内部进行排序! 效果如下:
这样就可以产生预期的效果了。
以上是个人的见解,如有错误,欢迎指正