我正在运行 postgresql 9.3.4。我有一个包含 3 个字段的表:
id name addr
--- ---- ----
1 n1 ad1
2 n2 ad2
...
我需要将数据移动到具有以下字段的新表中:
id data
--- ----
1 {'name': 'n1', 'addr': 'ad1'}
2 {'name': 'n2', 'addr': 'ad2'}
...
row_to_json
对我来说不是解决方案,因为它也SELECT t.id, row_to_json(t) as data FROM (select id, name, addr from myt) t
增加id
了结果。有没有办法在我的数据字段中选择我需要的字段(名称和地址)?
在Postgres 9.5或更高版本中使用运算符
jsonb - text → jsonb
删除单个键最简单- 在使用. (如果您不想要,请将结果转换为。)to_jsonb()
json
jsonb
在Postgres 10或更高版本中,您还可以使用operator
jsonb - text[] → jsonb
删除整个键数组。json_build_object()
在Postgres 9.4或更高版本中还有一个更好的选择:但是自Postgres 9.3以来还有一种更简单的方法:
to_json()
大多与row_to_json()
.在小提琴中找到更多的语法变体。
db<>fiddle here
旧sqlfiddle (Postgres 9.6)
相关答案:
选择 json_agg 中的列
在 SQL (Postgres) 中作为 JSON 对象数组返回
返回总行数和选定(聚合)数据
我从这个链接找到了答案: