2

私は最新の postgres 9.3 を使用しています。これは、json を高度にサポートし、json フィールド内の特定のキーを照会しています。しかし、json フィールドの更新中に問題に直面しています。

基本的に、私の json 列は、いくつかのフィールドの頻度を含む辞書です。フィールドは動的であるため、json 構造体に入れました。今、更新クエリで問題に直面しています。そのjson dictの対応するフィールドの頻度を追加したいだけです。

したがって、{"a":10, "b":2} のような sth があり、着信アイテムの更新中に {"a":2,"c":3} である場合、新しい行には { "a":12, "b":2, "c":3}

あなたの助けに感謝。

4

1 に答える 1

1

PostgreSQL では次のようなことができます。

update Test1 as t set
    data = (
        select
        ('{' || string_agg(a.data, ',') || '}')::json
        from (
            select '"' || a.key || '" :' || sum(a.value::int)::text as data
            from (
                select * from json_each_text(t.data)
                union all
                select * from json_each_text('{"a":2,"c":3}'::json) -- incoming
            ) as a
            group by a.key
       ) as a
   )

しかし、より簡単な方法は、Python (または他の PL) 関数を作成することです。

于 2013-10-24T11:18:29.653 に答える