GROUP_CONCAT函数是用来将多行数据按照指定的分隔符合并成一行的字符串。它的语法如下:
GROUP_CONCAT([DISTINCT] expr [, expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [, col_name ...]]
[SEPARATOR str_val])
参数说明:
DISTINCT
:可选项,表示去重,只有当指定了DISTINCT时,函数才不会返回重复的值。expr
:要合并的字段,可以是列名、常量或者表达式。ORDER BY
:可选项,表示合并数据之前的排序规则。ASC | DESC
:可选项,表示排序的顺序,默认是升序。SEPARATOR
:可选项,表示合并后的字符串中的分隔符,默认是逗号。示例: 假设有一个students表,包含以下数据:
+----+-------+---------+
| id | name | class |
+----+-------+---------+
| 1 | Alice | Math |
| 2 | Bob | English |
| 3 | Alice | Science |
+----+-------+---------+
使用GROUP_CONCAT函数可以将相同姓名的学生的班级合并成一个字符串。例如:
SELECT name, GROUP_CONCAT(class) AS classes
FROM students
GROUP BY name;
执行上述查询语句后,将会得到以下结果:
+-------+-----------------+
| name | classes |
+-------+-----------------+
| Alice | Math,Science |
| Bob | English |
+-------+-----------------+
可以看到,相同姓名的学生的班级已经合并成了一个字符串,并以逗号分隔。