使用
jsonb
和 Postgres 我遇到了以下问题:
我的输出如下所示:
[ {columnName: {}}, { columnName: {} } ]
但我希望它看起来像这样:[ {}, {} ]
我想将所有对象放入
jsonb
数组中,但不添加列名称。
这是基本查询,可以在这个小提琴中看到:http://sqlfiddle.com/#!17/b701b8/2
我注意到,使用
array_agg()
时,不会添加列名称,但使用 JSON 时,会添加列名称。如何删除列名称以便我可以使用 JSON 获得所需的输出?
select json_agg(v)
from (
select json_build_object('pos',pos, 'type',type, 'color',color)
from (select * from images)a
union all
select json_build_object('pos',pos, 'type',type, 'value',value)
from (select * from letters)b
)v
聚合列而不是整行:
SELECT json_agg(v.image) AS images
FROM (
SELECT json_build_object('pos',pos, 'type',type, 'color',color) AS image -- !
FROM images i -- simpler
UNION ALL
SELECT json_build_object('pos',pos, 'type',type, 'value',value)
FROM letters l -- simpler
) v;
嵌套时更简单整行:
SELECT json_agg(v.image) AS images
FROM (
SELECT row_to_json(i) AS image
FROM images i
UNION ALL
SELECT row_to_json(l)
FROM letters l
) v;
参见: