假设我有一个桌子mytable
select * from mytable
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 1 | a | | 1 | 2 | b | +------+------+------+我想将列b和c都分组为group_concat函数:
select a, group_concat(b), group_concat(c) from mytable group by a
+------+-----------------+-----------------+ | a | group_concat(b) | group_concat(c) | +------+-----------------+-----------------+ | 1 | 1,2 | a,b | +------+-----------------+-----------------+我的问题是,mysql是否保证,group_concat将始终保持相同的顺序,我不会得到像第二列的1,2和第三列的b,a这样的结果?
发布于 2014-07-05 12:45:06
如果不指定order by,订单就无法得到保证,这也是group_concat()拥有自己的order by clause的原因。按照MySQL规范,语法如下
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])因此,如果您想确定订单,那么请指定一个类似的order by
select a,
group_concat(b order by b desc) as b_concat,
group_concat(c order by c desc) as c_concat
from mytable
group by ahttps://stackoverflow.com/questions/24586485
复制相似问题