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 |
+-------+-----------------+
可以看到,相同姓名的學生的班級已經合并成了一個字符串,并以逗號分隔。