2013-10-24 23 views
2

我使用的是最新的postgres 9.3,它支持json並且還查詢json字段中的特定鍵。但是我在更新json字段時遇到問題。用postgres查詢中的另一個更新json項目

基本上,我的json列是一個包含一些字段的頻率的字典,現在因爲字段是動態的,所以我把它們放在json結構中。現在我在更新查詢中遇到了麻煩,我只是想添加該json字典的相應字段的頻率。所以,如果我有這樣的 - {「a」:10,「b」:2},而更新傳入的項目是{「a」:2,「c」:3},我的新行應該有{「a」:12,「b」:2,「c」:3}

感謝您的幫助。

回答

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)功能。

+0

感謝您花時間!我認爲我更喜歡pl/python方法。更清潔,更容易維護。 –

相關問題