You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何提取jsonb数组内指定字段值并拼接为新数组

PostgreSQL jsonb数组字段提取指定字段值方法

最终实现SQL

如果你要将整张表所有data数组里的table字段聚合为一个数组,使用以下语句:

SELECT jsonb_agg(elem ->> 'table') AS food_tables
FROM orders, jsonb_array_elements(data) AS elem;

如果需要按orders表的行维度返回,每行对应自身data字段提取的桌号数组(假设表主键为id),使用以下语句:

SELECT o.id, jsonb_agg(elem ->> 'table') AS food_tables
FROM orders o
CROSS JOIN LATERAL jsonb_array_elements(o.data) AS elem
GROUP BY o.id;

相关逻辑说明

jsonb_array_elements()作用机制

它是PostgreSQL内置的集合返回函数,作用是将jsonb类型的数组拆分为多行,每个数组元素对应一行结果。
以上面你给出的data数组为例,执行jsonb_array_elements(data)后会得到2行结果,每行分别对应数组里的两个jsonb对象:

-- 第一行
{"food_id": "1", "table": "A12"}
-- 第二行
{"food_id": "2", "table": "A14"}

其他用到的操作符/函数说明

  • ->>:jsonb取值操作符,用于提取jsonb对象的指定字段值,返回结果为text类型
  • jsonb_agg():jsonb聚合函数,用于将多行值聚合为一个jsonb数组

内容的提问来源于stack exchange,提问作者mokalovesoulmate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 05:54:08