在MySQL中,GROUP_CONCAT函數(shù)用于將多行數(shù)據(jù)按照指定的順序進(jìn)行連接,生成一個(gè)字符串。其語(yǔ)法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
參數(shù)說明:
DISTINCT
:可選參數(shù),用于去除重復(fù)的值。expr
:要連接的列或表達(dá)式。ORDER BY
:可選參數(shù),用于指定連接后的結(jié)果排序。ASC
或DESC
:可選參數(shù),用于指定排序的順序。SEPARATOR
:可選參數(shù),用于指定連接字符串的分隔符,默認(rèn)為逗號(hào)。示例用法:
假設(shè)有以下表students
:
+----+--------+-------+
| id | name | class |
+----+--------+-------+
| 1 | Alice | A |
| 2 | Bob | A |
| 3 | Charlie| B |
| 4 | David | C |
+----+--------+-------+
name
列的值,并使用逗號(hào)作為分隔符:SELECT GROUP_CONCAT(name)
FROM students;
結(jié)果為:Alice,Bob,Charlie,David
name
列的值,并按照id
進(jìn)行升序排序:SELECT GROUP_CONCAT(name ORDER BY id ASC)
FROM students;
結(jié)果為:Alice,Bob,Charlie,David
name
列的值,并去除重復(fù)值:SELECT GROUP_CONCAT(DISTINCT name)
FROM students;
結(jié)果為:Alice,Bob,Charlie,David
name
列的值,并使用分號(hào)作為分隔符:SELECT GROUP_CONCAT(name SEPARATOR ';')
FROM students;
結(jié)果為:Alice;Bob;Charlie;David
注意事項(xiàng):
group_concat_max_len
所定義的最大長(zhǎng)度,默認(rèn)情況下會(huì)被截?cái)唷?/li>