学而实习之 不亦乐乎

MySQL 中 GROUP_CONCAT() 的使用

2024-04-14 19:38:53

一、GROUP_CONCAT 基本用法

GROUP_CONCAT函数是MySQL数据库中一个聚合函数。它将一列数据拼接成一个字符串,并返回该字符串。一般的用法是:

SELECT GROUP_CONCAT(column_name SEPARATOR separator) FROM table_name WHERE conditions;
  • column_name 是要拼接的列名
  • table_name 是数据表名
  • conditions 是查询条件
  • separator 是拼接连接符。

实例:

查询表然后按分类进行 group 分组,并将其中一个字段使用group_concat()拼接

select category_1,category_2,GROUP_CONCAT(product_id) as product_list
from products
where total>0
group by category_1,category_2

二、结果被截断问题

MySQL 的 group_concat 默认连接长度为 1024 字符,也就是说你连接后的结果超过 1024 字符,它只会显示这么长,其余部分都会被截断。

解决方案:

(1)执行以下sql语句:

SET GLOBAL group_concat_max_len = 102400;

此方法有一个缺点,重启服务后设置失效。

(2)在MySQL配置文件(my.ini)中加:

group_concat_max_len = 102400;

-1 为最大值, 或者填入你要的最大长度,然后重启 MySQL 服务。