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

PostgreSQL中jsonb数组循环遍历获取相邻元素对的查询问题

实现方案

你可以结合generate_series生成数组下标,配合LATERAL关联实现相邻元素配对,以下是可直接运行的查询代码:

SELECT
  t.id,
  (t.transferList -> idx.i) ->> 'team' AS start_team,
  (t.transferList -> idx.i) ->> 'queue' AS start_queue,
  (t.transferList -> (idx.i + 1)) ->> 'team' AS end_team,
  (t.transferList -> (idx.i + 1)) ->> 'queue' AS end_queue
FROM
  temp.transfers t
  CROSS JOIN LATERAL generate_series(0, jsonb_array_length(t.transferList) - 2) AS idx(i);

逻辑说明

  1. 用jsonb_array_length获取每行transferList的数组长度,生成从0到「数组长度-2」的连续下标,确保每个下标i都存在对应的i+1位元素
  2. CROSS JOIN LATERAL会为每行原表数据,关联生成对应数量的下标行,实现类似循环遍历的效果
  3. 分别取下标i和i+1位置的json元素,读取对应字段即可得到你需要的相邻配对结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:39:04