mysql GROUP_CONCAT 可以用来进行分组排序后的可以将多条数据合并成一条数据,并可以进行字符串拼接。
今日在使用时需要对GROUP_CONCAT 内补数据进行拼接排序,字符串拼接时未出现问题,但是加上排序之后就出现了问题。
1.GROUP_CONCAT长度已经进行了设置。
SET GLOBAL group_concat_max_len=40000;
SET SESSION group_concat_max_len = 102400;
show variables like 'group_concat_max_len';
2.mysql配置文件也已经修改。
group_concat_max_len = 102400
下面复现问题:第一次,没有排序sql
select
CONCAT('[',GROUP_CONCAT('{"id":"',id,'","image_time":"',image_time ,'","url":"',url,'"}' separator ',') ,']') images
from camera_team_image_info where team_id='1'
and `user_id`='1'
and is_deleted='0'
group by merge_id order by create_time desc
查询结果
第二次,加上排序 sql
select
CONCAT('[',GROUP_CONCAT('{"id":"',id,'","image_time":"',image_time order by image_time ,'","url":"',url,'"}' separator ',') ,']') images
from camera_team_image_info where team_id='1'
and `user_id`='1'
and is_deleted='0'
group by merge_id order by create_time desc
查询结果:
发现,结尾处明显缺失部分拼接字符串,查找资料没有找到原因,后来发现是排序字段之后的拼接失效了,找到问题,尝试调整sql,把排序字段放在尾部,取消尾部之后的字符串拼接:
select
CONCAT('[',GROUP_CONCAT('{"id":"',id ,'","url":"',url,'","image_time":"',image_time order by image_time separator '"},') ,'"}]') images
from camera_team_image_info where team_id='1'
and `user_id`='1'
and is_deleted='0'
group by merge_id order by create_time desc
插叙结果:
可以满足自己的需求。菜鸟一枚,只能用菜鸟专属方法。。。。。