mysql 的group_concat坑

/ 0评 / 0

问题:mysql数据库使用group_concat时,发现实际数据和结果数据总是对不上,差很大一截

解决过程:
因为已确认数据少了,所以第一时间优先怀疑SQL是不是写错了,因此打印group_concat和起要联合的所有数据。
SELECT group_concat(distinct user_id) AS ids, COUNT(distinct user_id) from use
通过对比数据发现,通过group_concat函数后,数据量变小,但实际是查询出了这么多的数据,于是开始百度group_concat的用法,然后发现了这个坑。

网上解答和解决方式如下:
原因:mysql的group_concat默认连接长度为1024字符,也就是说你需要连接后的连接超过1024字符,它只会显示这么长,其余部分都会被截取丢掉。

解决办法:
(1)线上修改环境变量

SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;

(2)修改配置文件 (重启mysql后,不需要再执行线上修改操作)
在mysql配置文件中添加如下这句

group_concat_max_len = 102400

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据