GROUP_CONCAT()是MySQL數據庫提供的一個函數,通常跟GROUP BY一起用,可參考MySQL官方文件。
以下是官網上的範例和語法:
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;
以下為注意重點:
- group_concat 中其實可放另一個SQL的語法。其中,若要排除重覆的值,則加入關鍵字 DISTINCT;若要讓相黏的內容排序,可以在 group_concat 中使用 ORDER BY 關鍵字;而 SEPARATOR 用來作為字串相黏的分隔符號。
- 如果相黏的字串中有NULL值,他就會回傳NULL值,這裡要特別注意。
- 產生的值資料型態是 BLOB,他的最大長度是由系統變數 group_concat_max_len 決定,預設是1024bytes;此外有效的最大長度由 max_allowed_packet 系統變數所限制。如果在執行期要修改限制,可使用以下的SQL:
SET [GLOBAL | SESSION] group_concat_max_len = val;
參考資料:精讚部落
沒有留言:
張貼留言