Ali*_*iBZ 33 postgresql row json
我正在运行 postgresql 9.3.4。我有一个包含 3 个字段的表:
id name addr
--- ---- ----
1 n1 ad1
2 n2 ad2
...
Run Code Online (Sandbox Code Playgroud)
我需要将数据移动到包含以下字段的新表:
id data
--- ----
1 {'name': 'n1', 'addr': 'ad1'}
2 {'name': 'n2', 'addr': 'ad2'}
...
Run Code Online (Sandbox Code Playgroud)
row_to_json对我来说不是解决方案,因为它也SELECT t.id, row_to_json(t) as data FROM (select id, name, addr from myt) t增加id了结果。有没有办法在我的数据字段中选择我需要的字段(名称和地址)?
Erw*_*ter 81
json_build_object()在 Postgres 9.4+ 中有一个更好的选择:
SELECT id, json_build_object('name', name, 'addr', addr) AS data
FROM myt;
Run Code Online (Sandbox Code Playgroud)
但是row_to_json()在 Postgres 9.3 中还有一种更简单、更快的方法:
SELECT id, row_to_json((SELECT d FROM (SELECT name, addr) d)) AS data
FROM myt;
Run Code Online (Sandbox Code Playgroud)
db<>fiddle here Postgres 9.6 上的
旧SQL Fiddle。
相关回答:
我从这个链接找到了答案:
select * from (
select id,
(
select row_to_json(d)
from (
select name, addr
from myt d
where d.id=s.id
) d
) as data
from myt s
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48147 次 |
| 最近记录: |