MySQL列拼成字符串的實(shí)現(xiàn)
有時(shí)候我們需要將數(shù)據(jù)庫表中某個(gè)列的值拼成字符串,MySQL提供了GROUP_CONCAT函數(shù),可以輕松實(shí)現(xiàn)該功能。
GROUP_CONCAT函數(shù)的用法
GROUP_CONCAT函數(shù)的語法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
其中DISTINCT表示去重(可選),expr表示要拼接的列,ORDER BY用來指定拼接的順序(可選),SEPARATOR用來指定拼接的分隔符(可選)。
示例場景
假設(shè)有一張用戶表user,其中有兩列username和role,需要將同一role對應(yīng)的username拼成一個(gè)字符串,中間以逗號分隔。
可以使用以下SQL語句實(shí)現(xiàn):
SELECT role, GROUP_CONCAT(username SEPARATOR ',') FROM user GROUP BY role;
結(jié)果分析
上面SQL語句執(zhí)行的結(jié)果將會是一個(gè)二維表格,第一列為role,第二列為拼接好的字符串。
例如如果user表中的數(shù)據(jù)如下:
username | role
-------- | ----
Alice | A
Bob | B
Charlie | A
David | A
Eve | B
執(zhí)行上面的SQL語句后,得到的結(jié)果如下:
role | GROUP_CONCAT(username SEPARATOR ',')
---- | ------------------------------------
A | Alice,Charlie,David
B | Bob,Eve
總結(jié)
MySQL的GROUP_CONCAT函數(shù)可以將某個(gè)列的值拼成一個(gè)字符串,使用該函數(shù)的語法非常簡單,可以方便地實(shí)現(xiàn)需要將某個(gè)列拼成字符串的功能。