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

SQLite JSON_GROUP_ARRAY()

    SQLite json_group_array() functionは、集計内のすべての値で構成されるJSON配列を返す集計関数です。

    つまり、引数で指定された値から配列を作成します。

    構文

    json_group_array(X)

    ここでX 結果の配列が構成される要素を表します。

    簡単な例を次に示します。

    SELECT json_group_array( "Fritz" );

    結果:

    ["Fritz"]

    指定した値で配列が返されたことがわかります。

    ただし、この関数の真の力は、集合データを使用するシナリオで示されます(以下のデータベースの例のように)。結局のところ、json_array()を使用することもできたはずです。 上記の例の関数:

    SELECT json_array( "Fritz" );

    結果:

    ["Fritz"]

    前述のように、この関数の真の力は集合体データの処理にあります。したがって、json_group_array() 通常、データベースを照会するときに使用されます。

    データベースの例

    次の表があるとします。

    SELECT * FROM Pets;

    結果:

    +-------+---------+--------+
    | PetId | PetName | TypeId |
    +-------+---------+--------+
    | 1     | Homer   | 3      |
    | 2     | Yelp    | 1      |
    | 3     | Fluff   | 2      |
    | 4     | Brush   | 4      |
    +-------+---------+--------+

    3つの列があり、それらの名前を確認できます。

    json_group_array()を使用できます このように:

    SELECT json_group_array(TypeId)
    FROM Pets;

    結果:

    [3,1,2,4]

    ここでは、すべてのTypeIdで構成される配列を作成しました 値。

    さらに一歩進んで、別のJSON関数を引数としてjson_group_array()に渡すことができます。 。

    たとえば、データベースの各行にJSONオブジェクトを生成する場合は、json_object()を使用できます。 次のようにテーブル上で機能します:

    SELECT json_object( 
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    FROM Pets;

    結果:

    {"PetId":1,"PetName":"Homer","TypeId":3}
    {"PetId":2,"PetName":"Yelp","TypeId":1}
    {"PetId":3,"PetName":"Fluff","TypeId":2}
    {"PetId":4,"PetName":"Brush","TypeId":4}

    その後、json_group_array()を使用できます 外部配列を提供する関数:

    SELECT json_group_array( 
            json_object(
            'PetId', PetId, 
            'PetName', PetName,
            'TypeId', TypeId 
            )
        )
    FROM Pets;

    結果:

    [{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

    これで、json_object()によって生成されたすべてのJSONドキュメント json_group_array()によって生成された配列で囲まれています 。


    1. PostgreSQLを使用して同じクエリの複数の行を更新する

    2. MYSQLのより高いLIMITオフセットがクエリを遅くするのはなぜですか?

    3. PHP / MySQLでの地理検索(距離)(パフォーマンス)

    4. getReadableDatabase()を呼び出すときのNullポインタ例外