2013-10-24 3 views
2

으로 업데이트합니다. json에 대한 지원이 훌륭하고 json 필드 내의 특정 키를 쿼리하는 최신 postgres 9.3을 사용하고 있습니다. 하지만 json 필드를 업데이트하는 동안 문제가 발생했습니다.postgres 쿼리에서 json 항목을

기본적으로 내 json 열은 일부 필드의 빈도가 포함 된 사전입니다. 필드가 동적이어서 json 구조체에 넣었습니다. 이제 업데이트 쿼리에서 문제가 발생했습니다. 여기서는 해당 json dict의 해당 필드 빈도를 추가하려고합니다.

그래서 {{a ": 10,"b ": 2}와 같이 sth를 사용하면 들어오는 항목을 업데이트하는 동안 {"a ": 2,"c ": 3} 행에는 { "a": 12, "b": 2, "c": 3}

감사합니다.

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 
    ) 

을하지만 쉬운 방법은 파이썬 (또는 다른 PL) 함수를 작성하는 것입니다 수 있습니다 :

답변

1

당신은 PostgreSQL의이 같은 작업을 수행 할 수 있습니다.

+0

시간을내어 주셔서 감사합니다. 나는 pl/python 방식을 선호한다고 생각한다. 훨씬 더 깔끔하고 유지 보수가 쉽습니다. –

관련 문제