天天看點

mysql concat json_mysql 聚合函數 group_concat JSON_ARRAYAGG(col or expr)

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;

結果如下,并沒有排序

mysql concat json_mysql 聚合函數 group_concat JSON_ARRAYAGG(col or expr)

select SId, group_concat(cId),group_concat(score order by score desc separator ' ')

from sc group by SId;

結果如下:

mysql concat json_mysql 聚合函數 group_concat JSON_ARRAYAGG(col or expr)

至于對多個expr的連接配接,試了試,會把兩個字段無縫連在一起。

select SId, group_concat(cId,score),group_concat(score) from sc group by SId;

mysql concat json_mysql 聚合函數 group_concat JSON_ARRAYAGG(col or expr)

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。

示例如下:

mysql concat json_mysql 聚合函數 group_concat JSON_ARRAYAGG(col or expr)

2.6 JSON_OBJECTAGG(key,value)

兩個列名或表達式作為參數,第一個用作鍵,第二個用作值,并傳回包含鍵值對的JSON對象。

如果結果不包含任何行,或者出現錯誤,則傳回NULL。如果任何鍵名稱為NULL或參數數量不等于2,則會發生錯誤。

mysql concat json_mysql 聚合函數 group_concat JSON_ARRAYAGG(col or expr)

如何處理重複key,參考原文此處。