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
[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;
若已經設定了最大長度, 則結果被截至這個最大長度。