Postgres 9.6更新jsonb列以使用查询中的值添加新属性

时间:2018-02-27 16:58:36

标签: postgresql jsonb

我有一个表xyz,在postgres中有一个元数据jsonb列。
Table : xyz column : metadata, type = jsonb

metadata = {"exceptions": {"first_exception": "first_value"} }

我想添加一个新的sub_attribute

desired metadata = {"exceptions": {"first_exception": "123"},{"second_exception": "234"}  }

我可以使用

update xyz 
SET metadata = jsonb_set(metadata->'exceptions', '{second_exception}', '"234"', true). 

但我希望从select查询中获取值234。我无法确定如何将选择查询与更新结合使用。

1 个答案:

答案 0 :(得分:2)

你可以做到

UPDATE xyz
SET metadata = jsonb_set(metadata, '{exceptions, second_exception}', other.value::jsonb)
FROM other
WHERE other.column = xyz.column

注意{"exceptions": {"first_exception": "123"},{"second_exception": "234"}}不是有效的json,更新会给你如下结果{"exceptions": {"first_exception": "123", "second_exception": "234"}}