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

postgresqlのjsonbネストされた配列からキーと値のペアを削除します

    ステップバイステップのデモ:db <> fiddle

    SELECT
        jsonb_object_agg(key, a)                                -- 5
    FROM (
        SELECT
            mydata,
            key,
            jsonb_agg(a_elems.value - 'c') as a                   -- 3/4
        FROM
            mytable,
            jsonb_each(mydata) elems,                             -- 1
            jsonb_array_elements(elems.value) AS a_elems          -- 2
        GROUP BY mydata, key                                      -- 4
    ) s
    GROUP BY mydata                                               -- 5
    
    1. JSON要素をそれぞれ1行に展開します。これにより、2つの列が生成されます。1つはキー用、もう1つは値(JSON配列)用です。
    2. JSON配列をそれぞれ1行に展開します(これにより、cを削除する集約されたJSONオブジェクトが分離されます。 要素)
    3. -を使用できます 要素を削除する演算子。
    4. 元のJSONオブジェクトを再集計するには、それを逆方向にグループ化する必要があります。 jsonb_agg() 配列を再集約します
    5. 最後に、jsonb_object_agg()を使用して元のJSONオブジェクトを再構築する必要があります 以前に生成されたキー列と新しい配列列を使用します。



    1. データベースが引用符にスラッシュを追加しないようにする方法

    2. mySQLエラー:#1248-すべての派生テーブルには独自のエイリアスが必要です

    3. JPAの多対多の関係により、無限再帰とスタックオーバーフローエラーが発生します

    4. 1つのクエリでmysqlデータを一括更新する方法は?