转:http://blog.csdn.net/wangyonglin1123/article/details/51744834
MySQL的 group_concat 函数默认返回1024个字节长度,超过长度的会被截断。最近程序中就遇到这个问题了。
通过如下命令可以查看到当前mysql系统的参数:
mysql> show variables like "%concat%";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| group_concat_max_len | 1024 |
+----------------------+-------+
1 row in set (0.00 sec)
2. 有两个方法可以设置group_concat_max_len的值
(1) 在 /etc/my.cnf 中的[mysqld]加上group_concat_max_len = 1024000,需要重启mysql才能生效
(2) 在命令行下输入:
SET GLOBAL group_concat_max_len=1024000;
或者 SET SESSION group_concat_max_len=1024000;
GLOBAL 是对全局生效的,而SESSION是对当前会话有效。需要有管理员权限才可以操作GLOBAL哦!!!
1024指的是字节哦
如下面两条sql:
SELECT sales_no bizNo,b.merchandise_no FROM vip_sales.sales a,vip_sales.merchandise b,vip_sales.sales_merchandise_rel c WHERE a.id=c.sales_id AND b.id=c.m_id AND a.is_deleted=0 AND b.is_deleted=0 AND c.is_deleted=0 AND a.sales_no=2016056141
和
SELECT sales_no bizNo ,GROUP_CONCAT(merchandise_no ORDER BY merchandise_no ASC SEPARATOR ',') AS merchandise_no FROM vip_sales.sales a,vip_sales.merchandise b,vip_sales.sales_merchandise_rel c WHERE a.id=c.sales_id AND b.id=c.m_id AND a.is_deleted=0 AND b.is_deleted=0 AND c.is_deleted=0 AND a.sales_no=2016056141
第一条sql查出有355行,第二条sql查出结果后,通过“,”分隔出来,只有114行。
这种做法是一种坑,莫踩!!