繁体   English   中英

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

[英]Update a json item with another in postgres query

我正在使用最新的postgres 9.3,该版本对json具有很好的支持,并且还查询json字段内的特定键。 但是我在更新json字段时遇到问题。

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

因此,如果我有这样的事情-{“ 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)函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM