帶您了解MySQL GROUP_CONCAT函數(shù)
MySQL GROUP_CONCAT函數(shù)是非常重要的函數(shù),MySQL GROUP_CONCAT函數(shù)在MySQL 4.1 中被加入,下面就對(duì)該函數(shù)的語(yǔ)法進(jìn)行詳細(xì)介紹。
MySQL GROUP_CONCAT(expr)
完整句法如下: GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
MySQL GROUP_CONCAT函數(shù)在 MySQL 4.1 中被加入。函數(shù)返回一個(gè)字符串結(jié)果,該結(jié)果由分組中的值連接組合而成: mysql> SELECT student_name,
-> GROUP_CONCAT(test_score)
-> FROM student
-> GROUP BY student_name;
or
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR " ")
-> FROM student
-> GROUP BY student_name;
在 MySQL 中,你可以得到表達(dá)式結(jié)合體的連結(jié)值。通過(guò)使用 DISTINCT 可以排除重復(fù)值。如果希望對(duì)結(jié)果中的值進(jìn)行排序,
可以使用 ORDER BY 子句。為了以倒序排序,可以在 ORDER BY 子句中用于排序的列名后添加一個(gè) DESC (遞減 descending) 關(guān)鍵詞
。缺省為升序;這也可以通過(guò)使用 ASC 關(guān)鍵詞明確指定。
SEPARATOR 是一個(gè)字符串值,它被用于插入到結(jié)果值中。缺省為一個(gè)逗號(hào) (",")。
你可以通過(guò)指定 SEPARATOR "" 完全地移除這個(gè)分隔符。
在你的配置中,通過(guò)變量 group_concat_max_len 要以設(shè)置一個(gè)***的長(zhǎng)度。
在運(yùn)行時(shí)執(zhí)行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果***長(zhǎng)度被設(shè)置,結(jié)果值被剪切到這個(gè)***長(zhǎng)度。
GROUP_CONCAT() 函數(shù)是一個(gè)增強(qiáng)的 Sybase SQL Anywhere 支持的基本 LIST() 函數(shù)。
如果只有一個(gè)列,并且沒(méi)有其它選項(xiàng)被指定,GROUP_CONCAT() 是向后兼容有極大限制的 LIST() 函數(shù)。
LIST() 有一個(gè)缺省的排序次序。
如果分組的字符過(guò)長(zhǎng),可以對(duì)系統(tǒng)參數(shù)進(jìn)行設(shè)置
SET @@global.group_concat_max_len=40000;
【編輯推薦】
SQL日期的相關(guān)函數(shù)介紹