GROUP_CONCAT
是 MySQL 中的一个聚合函数,用于将同一组内的多个值连接成一个字符串。它通常用于将某个分组内的多个字段值合并成一个单一的字符串。
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
DISTINCT
:可选,用于去除重复的值。expr
:要连接的字段或表达式。ORDER BY
:可选,用于指定连接值的顺序。SEPARATOR
:可选,用于指定连接值之间的分隔符,默认为逗号。GROUP_CONCAT
通常具有更好的性能。GROUP_CONCAT
主要用于处理字符串类型的数据,但也可以与其他数据类型一起使用,只要它们可以被转换为字符串。
GROUP_CONCAT
将同一客户的多个订单号合并成一个字符串。假设有一个学生表 students
,结构如下:
| id | name | class | |----|-------|-------| | 1 | Alice | A | | 2 | Bob | A | | 3 | Carol | B | | 4 | Dave | B |
你可以使用以下查询来获取每个班级的学生名单:
SELECT class, GROUP_CONCAT(name) AS students
FROM students
GROUP BY class;
结果:
| class | students | |-------|-------------------| | A | Alice,Bob | | B | Carol,Dave |
GROUP_CONCAT
的默认最大长度是 1024 字节。如果结果超过这个长度,可以使用 SET SESSION group_concat_max_len = val;
来增加最大长度。GROUP_CONCAT
的默认最大长度是 1024 字节。如果结果超过这个长度,可以使用 SET SESSION group_concat_max_len = val;
来增加最大长度。GROUP_CONCAT
可能会导致性能问题。可以考虑使用其他方法,如临时表、子查询等。GROUP_CONCAT
的结果会受到字符集和排序规则的影响。可以使用 COLLATE
子句来指定排序规则。GROUP_CONCAT
的结果会受到字符集和排序规则的影响。可以使用 COLLATE
子句来指定排序规则。领取专属 10元无门槛券
手把手带您无忧上云