📜  MySQL GROUP_CONCAT()函数(1)

📅  最后修改于: 2023-12-03 15:03:04.737000             🧑  作者: Mango

MySQL GROUP_CONCAT()函数

GROUP_CONCAT()函数是MySQL中常用的聚合函数之一,它的主要作用是将指定列的所有行合并成一个字符串,并用指定的分隔符分隔。下面是GROUP_CONCAT()函数的基本语法:

GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])
  • DISTINCT:可选参数,用于去重。
  • expr:必选参数,需要合并的列或表达式。
  • ORDER BY:可选参数,用于指定合并后的字符串的排序顺序。
  • ASCDESC:可选参数,用于指定排序顺序。
  • SEPARATOR:可选参数,用于指定合并后的字符串的分隔符,默认为逗号。

下面是一个简单的示例:

SELECT GROUP_CONCAT(last_name ORDER BY last_name ASC SEPARATOR ', ') AS names
FROM employees
WHERE department_id = 1;

以上语句会将employees表中部门ID为1的所有员工的姓氏合并成一个字符串,以逗号加一个空格(, )作为分隔符,最终的结果类似于以下内容:

Doe, Smith, Wilson

GROUP_CONCAT()函数还可以用于合并多个表的数据,例如:

SELECT GROUP_CONCAT(DISTINCT table1.column1 ORDER BY table1.column1 SEPARATOR ', ') AS names
FROM table1
JOIN table2 ON table1.id = table2.id
WHERE table2.department_id = 1;

以上语句会将table1table2两个表中同一个员工ID的姓名合并成一个字符串,并且仅保留不重复的值,以逗号加一个空格(, )作为分隔符,最终的结果类似于以下内容:

Doe, Smith, Wilson

需要注意的是,GROUP_CONCAT()函数默认的分隔符为逗号,如果需要使用其他分隔符,需要在语句中明确指定。如果合并后的字符串长度超过3676个字节,会出现截断的情况,此时需要修改group_concat_max_len参数的值。

总之,GROUP_CONCAT()函数是使用频率非常高的MySQL聚合函数之一,能够方便地将多行数据合并成一个字符串,并且支持排序、去重和自定义分隔符等功能,非常实用。