首页 > 解决方案 > 从json中选择变量到具有现有记录的表的空列中

问题描述

我有一个包含多个列的表,其中一个是 jsonb 对象。我想从其中一个 json 变量创建一个新列,但更新命令附加到表的底部。

我有:

time    info    id    some_json
12      bla           {"id":"123","more_info":"bla bla"}
13      bla           {"id":"124","more_info":"bla bla"}

我需要:

time    info    id    some_json
12      bla     123   {"id":"123","more_info":"bla bla"}
13      bla     124   {"id":"124","more_info":"bla bla"}

我得到:

time    info    id    some_json
12      bla           {"id":"123","more_info":"bla bla"}
13      bla           {"id":"124","more_info":"bla bla"}
                123
                124

当我使用insert_into my_table(id) select some_json ->> 'id' from my_table;

这样做的正确方法是什么?我是一个 SQL 初学者,很多命令听起来很适合这项工作(更新、插入、选择、更改)。

标签: sqlpostgresql

解决方案


我认为您正在寻找一个简单的更新声明

update t set id = (some_json->>'id')::int;
                                   --^ cast it to the datatype of id column

演示


推荐阅读