在postgres查询中使用另一个json项更新json项

在postgres查询中使用另一个json项更新json项,json,postgresql,Json,Postgresql,我使用的是最新的Postgres9.3,它对json有着奇特的支持,还可以在json字段中查询特定的键。但我在更新json字段时遇到了问题 基本上,我的json列是一个字典,其中包含一些字段的频率,现在由于这些字段是动态的,我将它们放在json结构中。现在我在更新查询中遇到了麻烦,我只想添加json dict的相应字段的频率 所以,如果我有这样的东西-{“a”:10,“b”:2},当更新传入项时是{“a”:2,“c”:3},我的新行应该有{“a”:12,“b”:2,“c”:3} 感谢您的帮助。您

我使用的是最新的Postgres9.3,它对json有着奇特的支持,还可以在json字段中查询特定的键。但我在更新json字段时遇到了问题

基本上,我的json列是一个字典,其中包含一些字段的频率,现在由于这些字段是动态的,我将它们放在json结构中。现在我在更新查询中遇到了麻烦,我只想添加json dict的相应字段的频率

所以,如果我有这样的东西-{“a”:10,“b”:2},当更新传入项时是{“a”:2,“c”:3},我的新行应该有{“a”:12,“b”:2,“c”:3}


感谢您的帮助。

您可以在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)函数。

感谢您抽出时间!我想我更喜欢pl/python方法。更干净,更容易维护。