Mysql 5.7+:
GROUP_CONCAT()
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
這個函數把來自同一個組的某一列(或者多列)的資料連接配接起來成為一個字元串。
如果沒有非NULL值,傳回NULL。
示例如下:
select SId, group_concat(cId),group_concat(score) from sc group by SId;
結果如下,并沒有排序

select SId, group_concat(cId),group_concat(score order by score desc separator ' ')
from sc group by SId;
結果如下:
至于對多個expr的連接配接,試了試,會把兩個字段無縫連在一起。
select SId, group_concat(cId,score),group_concat(score) from sc group by SId;
Group_Concat()的結果将截斷為group_concat_max_len系統變量所設定的最大長度,該變量的預設值為1024。
而傳回值是非二進制或二進制字元串,具體取決于參數是非二進制還是二進制字元串。
傳回的結果類型為TEXT或BLOB,除非group_concat_max_len小于或等于512,這種情況下,結果類型為VARCHAR或VARBINARY。
2.5 JSON_ARRAYAGG(col or expr)
将結果集聚合為單個JSON數組,其元素由參數列的值組成。此數組中元素的順序未定義。該函數作用于計算為單個值的列或表達式。
異常傳回NULL。
示例如下:
2.6 JSON_OBJECTAGG(key,value)
兩個列名或表達式作為參數,第一個用作鍵,第二個用作值,并傳回包含鍵值對的JSON對象。
如果結果不包含任何行,或者出現錯誤,則傳回NULL。如果任何鍵名稱為NULL或參數數量不等于2,則會發生錯誤。
如何處理重複key,參考原文此處。