问题描述
今天遇到一个问题,在使用GROUP_CONCAT 拼接订单号时候,并且去重,出现下面这种情况,实际上是一个数据,但是后台返回给前台数据一会儿是2条重复数据,一会儿是1条不重复数据
敏感数据打码
搞得很郁闷,后来查来查去是GROUP_CONCAT 本身拼接字段是没有 顺序的,是无规则的,解决办法也很简单就是让排序呗
group_concat内部排序一下,就不会顺序错乱了
使用语法如下
group_concat(field order by field)
如下
GROUP_CONCAT( oi.order_no ORDER BY oi.order_no asc ) AS order_nos,
需要注意 的是 GROUP_CONCAT 函数默认有长度 限制
如果拼接的字段比较大超过1024 ,超过会被截断,数据就会不准确
解决办法:
1 修改长度
可以查询 show variables like 'group_concat_max_len';
可以使用如下语句修改长度
SET GLOBAL group_concat_max_len = 4294967295;
SET SESSION group_concat_max_len = 4294967295;
2 业务代码中拼接
根据查询条件,在业务代码中手动拼接。
|