多くのMySQL集計関数の中には、JSON_ARRAYAGG()
と呼ばれるものがあります。 。この関数を使用すると、結果セットを単一のJSON配列として集約できます。結果セットの各行は、配列内の単一の要素として終了します。
配列内の要素の順序は未定義です。
構文
構文は次のようになります:
JSON_ARRAYAGG(col_or_expr)
col_or_expr
の場所 は、単一の値に評価される列または式です。
例
実例を示します。
JSON_ARRAYAGG()
なしで実行できる一般的なクエリは次のとおりです。 機能:
SELECT District AS 'State', Name AS 'City' FROM City WHERE CountryCode = 'AUS' ORDER BY State;
結果:
+-----------------+---------------+ | State | City | +-----------------+---------------+ | Capital Region | Canberra | | New South Wales | Sydney | | New South Wales | Newcastle | | New South Wales | Central Coast | | New South Wales | Wollongong | | Queensland | Brisbane | | Queensland | Gold Coast | | Queensland | Townsville | | Queensland | Cairns | | South Australia | Adelaide | | Tasmania | Hobart | | Victoria | Melbourne | | Victoria | Geelong | | West Australia | Perth | +-----------------+---------------+
そのクエリを調整して、各都市が配列の要素になるようにすることができます。これを行うには、Name
を渡すだけです。 列(都市の名前)からJSON_ARRAYAGG()
へ 機能。
GROUP BY
も使用します 結果をDistrict
でグループ化する句 列(この場合、State
という名前のこの列のエイリアスを作成しました 。
SELECT District AS 'State', JSON_ARRAYAGG(Name) AS 'Cities' FROM City WHERE CountryCode = 'AUS' GROUP BY State;
結果:
+-----------------+--------------------------------------------------------+ | State | Cities | +-----------------+--------------------------------------------------------+ | Capital Region | ["Canberra"] | | New South Wales | ["Sydney", "Newcastle", "Central Coast", "Wollongong"] | | Queensland | ["Brisbane", "Gold Coast", "Townsville", "Cairns"] | | South Australia | ["Adelaide"] | | Tasmania | ["Hobart"] | | Victoria | ["Melbourne", "Geelong"] | | West Australia | ["Perth"] | +-----------------+--------------------------------------------------------+
JSON_OBJECTAGG()
も参照してください クエリからJSONオブジェクトを作成できる関数。