GROUP_CONCAT()函数可以将多条记录的同一字段的值,拼接成一条记录返回。但是默认情况下,这个拼接最大长度是有限制的,导致查询结果不完整。
我本来有345个id,结果查出来才有206个,后来查了百度才知道,group_concat是有长度限制的
查询group_concat的长度,默认为1024字节
show variables like 'group_concat_max_len';
接下来,怎么设置它的长度?两个办法
1、长久设置,有服务器权限,则group_concat_max_len = -1 ,大小为2^32 - 1,4294967295 字节,也就是4G。
2、临时设置,这个办法如果重启服务器后,就会失效。
SET GLOBAL group_concat_max_len=-1;
SET SESSION group_concat_max_len=-1;
有这个后,我想到wehe in 会不会也有长度限制呢?百度到mysql对where in没有限制,但它限制了mysql的长度默认是
max_allowed_packet=1M
如果需要很长,则可以把这个值改为更大如
max_allowed_packet=32M