Group_concat在取聚合的数据的时候是无序的
例如:
SELECT group_concat(user_name order by center_code)
from tr_zhubiao
where sex_name = '男'
limit 10
与
SELECT group_concat(user_name)
from tr_zhubiao
where sex_name = '男'
order by center_code
limit 10
结果返回的String 是不一定相同的!
按理来说order By都是按照ASCⅡ码表来排序的,为啥还会出现这个问题呢。原因是因为第一个sql是先将用户的编码查出来,然后将聚合的结果按照顺序排列,第二个sql是先进行排列,再进行聚合,聚合的时候其实就已经将排列的顺序又给打散了。
实际应用中,推荐使用的是第一种的用法,因为orderBy是需要遍历全表的,第二种相当于让所有人都排好队,然后选十个。第一种相当于随机选10个然后让10个人排队,从效率上来讲第一种好