postgresql - 具有计数器或索引值的 Postgres JSONB_ARRAY_ELEMENTS
问题描述
假设我有这个order
表,其中widgets
列是一个jsonb
数组:
订单号 | 小部件 |
---|---|
50 | [a,b,c] |
51 | [d,e,f] |
select
order_no,
jsonb_array_elements_text(widgets) widget
from order;
订单号 | 小部件 |
---|---|
50 | 一个 |
50 | b |
50 | C |
51 | d |
51 | e |
51 | F |
有没有办法让查询包含记录中每个 jsonb 数组元素的增量/计数器order
?(该示例是从零开始的,但使用从 1 开始的查找...)
订单号 | 小部件 | 编号 |
---|---|---|
50 | 一个 | 0 |
50 | b | 1 |
50 | C | 2 |
51 | d | 0 |
51 | e | 1 |
51 | F | 2 |
解决方案
在它所属的地方使用集合返回函数:在 FROM 子句中。然后您可以使用以下with ordinality
选项:
select o.order_no,
w.*
from "order" o
cross join jsonb_array_elements_text(widgets) with ordinality as w(widget, idx)
order by o.order_no, w.idx;
推荐阅读
- javascript - 有没有办法从早期的空/未定义检查“信号”类型缩小到 TypeScript?
- postgresql - 在 POSTGIS 中设置单位
- python-3.x - Python3 - Popen 输出与控制台命令不完全匹配
- c# - Microsoft Office VSTO 插件:如何从 ThisAddIn 类访问功能区 xml 控件
- amazon-web-services - AWS Cognito NotAuthorizedException:登录令牌无效。令牌签名无效
- javascript - 为什么我的 React Context Helper 函数使用过时的状态?
- python - 使用python将单元格数据拆分为多行
- python - 展平嵌套的json以分隔python中的列
- sql - T-SQL 中的日期循环
- c# - 使用C#将数据从串口实时存储到csv文件