PostgreSQL如何将jsonb字段值聚合生成json数组
解决方案
要实现将PostgreSQL表中多行jsonb字段聚合为目标格式的json数组,使用内置聚合函数jsonb_agg即可实现。
前提准备
你提供的测试表结构及测试数据如下:
表结构
create table test( fjson jsonb );
测试数据插入语句
insert into test values ('{"name":"A"}'::jsonb), ('{"name":"B"}'::jsonb), ('{"name":"C"}'::jsonb);
最简查询语句
直接执行以下SQL即可得到你需要的json数组结果:
SELECT jsonb_agg(fjson) AS json_array FROM test;
已验证的PL/pgSQL实现方案
如果需要在存储过程中实现逻辑,可以参考如下代码:
do $$ declare jdata jsonb; begin create temp table test( fjson jsonb ) on commit drop; insert into test values ('{"name":"A"}'::jsonb), ('{"name":"B"}'::jsonb), ('{"name":"C"}'::jsonb); select (select jsonb_agg(fjson) from test) into jdata; raise notice '%',jdata; end; $$ language plpgsql;
说明
jsonb_agg是PostgreSQL原生提供的jsonb类型聚合函数,会自动将多行的jsonb值拼接为一个jsonb数组,输出格式和你期望的效果完全匹配。
内容的提问来源于stack exchange,提问作者Jsy
相关产品推荐
相关产品推荐

