我有一个包含多行JSONB
列的表格。
每行包含一个JSON
数组。
现在我需要把它放到行中,但我也需要元素的位置。
e.g。
select *
from (
select jsonb_array_elements("values"::jsonb) from "myData"
) as x;
给我所有行的所有数组中的所有元素。
data
----------------------------
{ text: "Hello" } | 0 <-- first array element from first row
{ text: "World" } | 1 <-- second array element from first row
{ text: "Hallo" } | 0 <-- first array element from second row
{ text: "Welt!" } | 1 <-- second array element from second row
答案 0 :(得分:3)
使用横向联接和with ordinality
:
select *
from (
select t.*
from "myData", jsonb_array_elements("values") with ordinality as t(data, idx)
) as x;
如果"values"
已经是jsonb
列,则无需将其投放到jsbon