首页 文章

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

提问于
浏览
2

我正在使用最新的postgres 9.3,它支持json并且还查询json字段中的特定键 . 但是在更新json字段时我遇到了问题 .

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

所以,如果我有这样的话 - {“a”:10,“b”:2},并且在更新传入的项目时{{a“:2,”c“:3},我的新行应该{ “a”:12,“b”:2,“c”:3}

感谢您的帮助 .

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)函数 .

相关问题