【发布时间】:2020-12-07 12:15:19
【问题描述】:
这个问题是this的后续问题
我有下表的示例记录:
create table jtest
(
id int,
jcol json
);
insert into jtest values(1,'[{"name":"Jack","address1":"HNO 123"}]');
insert into jtest values(1,'[{"address2":"STREET1"}]');
insert into jtest values(1,'[{"address3":"UK"}]');
select * from jtest;
id jcol
-------------------------------------------
1 [{"name":"Jack","address":"HNO 123 UK"}]
1 [{"address2":"STREET1"}]
1 [{"address3":"UK"}]
预期结果:
id jcol
--------------------------------------------------------------------------------------------
1 [{"name":"Jack","address":"HNO 123 UK", "address2":"STREET1", "address3":"UK"}]
尝试了以下查询:
select id,json_agg(jcol) as jcol
from jtest
group by id;
但是得到的结果是出乎意料的:
id jcol
--------------------------------------------------------------------------------------------
1 [[{"name":"Jack","address":"HNO 123 UK"}], [{"address2":"STREET1"}], [{"address3":"UK"}]]
试过S-Man 答案:
SELECT
id,
json_object_agg(key, value)
FROM
jtest,
json_each(jcol)
GROUP BY id;
得到一个错误:
错误:无法将数组解构为对象
【问题讨论】:
标签: sql arrays json postgresql postgresql-10