SQL 合併多個記錄 --GROUP_CONCAT 用法

例子:

    表數據:(SELECT id,title FROM doc)

id title
2  aa
2  cc
3  dd
……

期望返回結果:"aa,cc,dd"

執行語句:SELECT GROUP_CONCAT(title) AS title FROM doc

 

期望返回結果:"aa,cc"

執行語句:SELECT id,GROUP_CONCAT(title) AS title FROM doc GROUP BY id

 

這裏採用了 GROUP_CONCAT 函數。下面是關於該函數的說明:

 

該函數返回帶有來自一個組的連接的非NULL值的字符串結果。其完整的語法如下所示: 

GROUP_CONCAT([DISTINCT] expr [,expr ...]

             [ORDER BY {unsigned_integer | col_name | expr}

                 [ASC | DESC] [,col_name ...]]

             [SEPARATOR str_val])

 

示例:

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中,你可以獲取表達式組合的連接值。你可以使用DISTINCT刪去重複值。假若你希望多結果值進行排序,則應該使用  ORDER BY子句。若要按相反順序排列,將 DESC (遞減) 關鍵詞添加到你要用ORDER BY 子句進行排序的列名稱中。默認順序爲升序;可使用ASC將其明確指定。   SEPARATOR 後面跟隨應該被插入結果的值中間的字符串值。默認爲逗號 (‘,’)。通過指定SEPARATOR '' ,你可以刪除所有分隔符。

使用group_concat_max_len系統變量,你可以設置允許的最大長度。  程序中進行這項操作的語法如下,其中 val 是一個無符號整數:

SET [SESSION | GLOBAL] group_concat_max_len = val;

若已經設置了最大長度, 則結果被截至這個最大長度。

 

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章