mysql使用group_contact有个很坑的

我在工作中有个定时任务查询订单什么什么的,然后我用的group_contact将订单号进行拼接,发现拼出来的字符串总是到最后一条数据不完整,我可能就猜到了可能这个订单太多了被截取了,果然把结果取出来,发现只有长1024,一百度,原来是group_contact默认长度为1024,如果非要全部显示的话,就需要去修改MySQL的配置文件(Windows下为my.ini -----  Linux下my.cnf):

#需要设置的长度
group_concat_max_len = 18446744073709551615

如果问我为什么这个值,请看https://www.jb51.net/article/136480.htm

重启mysql服务

使用sql:show variables like 'group_concat_max_len';

检查一下设置值是否生效

第二种:(如果是生产环境,不能重启,可以通过sql命令临时修改,mysql服务再次重启后失效,执行命令:)

可以使用sql语句设置:

SET GLOBAL group_concat_max_len=5120;
SET SESSION group_concat_max_len=5120;

但是我想的是还是算了,我一次性少查一点吧,就用limit限制一下,结果emmmm。。。不生效>.<

咋肥事.....

又百度...

找到了overflow(对于程序员,这是个好东西呀,基本有问题找他都能解决,最大困难全英文,没事,幸好我英语一般般)

答案也就是在group_contact外层再加一个函数进行截取substring_index

substring_index(group_concat(s.title SEPARATOR ','), ',', 3) as skills
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值