今天使用mysql group_concat()函數,對查詢的數據進行字符串連接操作。 不過由於查詢的結果較多,連接後的結果很長導致不能完全顯示。
查詢手冊發現如下說明:
(先說說group_concat函數)
- GROUP_CONCAT(expr)
該函數返回帶有來自一個組的連接的非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;
若已經設置了最大長度, 則結果被截至這個最大長度。
將環境變量group_concat_max_len 增大。默認是1024.我就設置了session級的環境變量將其變爲2048(不夠用再加大)。解決該問題