sql >> データベース >  >> RDS >> Mysql

JSON_OBJECTAGG()–MySQLのクエリ結果からJSONオブジェクトを作成します

    MySQLには、JSON_OBJECTAGG()と呼ばれる集計関数が含まれています 。この関数を使用すると、キーと値のペアを含むJSONオブジェクトを作成できます。具体的には、クエリの結果に基づいてこのJSONオブジェクトを作成できます。

    2つの引数を受け入れます。最初の引数はキーとして使用され、2番目の引数は値として使用されます。これらの引数は、列名または式にすることができます。

    構文

    構文は次のようになります:

    JSON_OBJECTAGG(key, value)
    

    key キーを表す列または式です キーと値のペア、およびvalue を表す列または式です キー/値ペアの。

    実例を示します。

    なしで実行する可能性のある一般的なクエリは次のとおりです。 JSON_OBJECTAGG() 機能:

    SELECT 
      District AS 'State',
      Name AS 'City',
      Population
    FROM City
    WHERE CountryCode = 'AUS'
    ORDER BY State;
    

    結果:

    +-----------------+---------------+------------+
    | State           | City          | Population |
    +-----------------+---------------+------------+
    | Capital Region  | Canberra      |     322723 |
    | New South Wales | Sydney        |    3276207 |
    | New South Wales | Newcastle     |     270324 |
    | New South Wales | Central Coast |     227657 |
    | New South Wales | Wollongong    |     219761 |
    | Queensland      | Brisbane      |    1291117 |
    | Queensland      | Gold Coast    |     311932 |
    | Queensland      | Townsville    |     109914 |
    | Queensland      | Cairns        |      92273 |
    | South Australia | Adelaide      |     978100 |
    | Tasmania        | Hobart        |     126118 |
    | Victoria        | Melbourne     |    2865329 |
    | Victoria        | Geelong       |     125382 |
    | West Australia  | Perth         |    1096829 |
    +-----------------+---------------+------------+
    

    そのクエリを調整して、Name 列(この例では、この列にCityのエイリアスを指定しています。 )がキーになり、Population 列が値になります。

    GROUP BYも使用します 結果をDistrictでグループ化する句 列(この場合、Stateという名前のこの列のエイリアスを作成しました 。

    SELECT 
      District AS 'State',
      JSON_OBJECTAGG(Name, Population) AS 'City/Population'
    FROM City
    WHERE CountryCode = 'AUS'
    GROUP BY State;
    

    結果:

    +-----------------+-----------------------------------------------------------------------------------------+
    | State           | City/Population                                                                         |
    +-----------------+-----------------------------------------------------------------------------------------+
    | Capital Region  | {"Canberra": 322723}                                                                    |
    | New South Wales | {"Sydney": 3276207, "Newcastle": 270324, "Wollongong": 219761, "Central Coast": 227657} |
    | Queensland      | {"Cairns": 92273, "Brisbane": 1291117, "Gold Coast": 311932, "Townsville": 109914}      |
    | South Australia | {"Adelaide": 978100}                                                                    |
    | Tasmania        | {"Hobart": 126118}                                                                      |
    | Victoria        | {"Geelong": 125382, "Melbourne": 2865329}                                               |
    | West Australia  | {"Perth": 1096829}                                                                      |
    +-----------------+-----------------------------------------------------------------------------------------+
    

    この場合、州/地区ごとに都市をグループ化しました。ただし、その国のすべての都市/人口を含む1つの大きなJSONオブジェクトだけが必要な場合は、州/地区(およびそれに関連するGROUP BY)を削除できます。 句)クエリから完全に。

    SELECT
      JSON_OBJECTAGG(Name, Population) AS 'City/Population'
    FROM City
    WHERE CountryCode = 'AUS';
    

    結果:

    +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | City/Population                                                                                                                                                                                                                                                                                |
    +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | {"Perth": 1096829, "Cairns": 92273, "Hobart": 126118, "Sydney": 3276207, "Geelong": 125382, "Adelaide": 978100, "Brisbane": 1291117, "Canberra": 322723, "Melbourne": 2865329, "Newcastle": 270324, "Gold Coast": 311932, "Townsville": 109914, "Wollongong": 219761, "Central Coast": 227657} |
    +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    

    JSON_ARRAYAGG()も参照してください クエリ結果をJSON配列に集約できる関数。


    1. Linq to SqlでSqlGeographyを使用することは可能ですか?

    2. Oracle-リテラルがフォーマット文字列エラーと一致しません

    3. OracleからPostgreSQLへの移行-知っておくべきこと

    4. AndroidSQLiteクローズ例外