我有一个表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
。我无法确定如何将选择查询与更新结合使用。
答案 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"}}