共57行
2026-04-17 14:14:30
是的,MySQL 的 GROUP_CONCAT 函数返回值长度是有限制的,受两个系统变量控制:
-- 查看当前设置
SHOW VARIABLES LIKE 'group_concat_max_len';
-- 查看最大允许值
SHOW VARIABLES LIKE 'max_allowed_packet';-- 临时修改(当前会话)
SET SESSION group_concat_max_len = 1024 * 1024; -- 1MB
-- 全局修改(需要重启或对新建会话生效)
SET GLOBAL group_concat_max_len = 10 * 1024 * 1024; -- 10MB
-- 在配置文件中永久修改(my.cnf 或 my.ini)
[mysqld]
group_concat_max_len = 10485760GROUP_CONCAT(DISTINCT column ORDER BY column SEPARATOR ',')-- 在查询前临时增大限制
SET SESSION group_concat_max_len = 1000000;
SELECT
group_id,
GROUP_CONCAT(item_name SEPARATOR ', ') as items
FROM table
GROUP BY group_id;如果数据量非常大,考虑:
建议根据实际数据量合理设置这个值,避免不必要的内存消耗。