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 | +-------+-----------------+
可以看到,相同姓名的学生的班级已经合并成了一个字符串,并以逗号分隔。