Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 迭代JSON数组中的每个元素并使用行连接_Sql_Arrays_Json_Postgresql_Lateral Join - Fatal编程技术网

Sql 迭代JSON数组中的每个元素并使用行连接

Sql 迭代JSON数组中的每个元素并使用行连接,sql,arrays,json,postgresql,lateral-join,Sql,Arrays,Json,Postgresql,Lateral Join,我试图编写一个SQL查询,将每一行与其自己的JSON数组元素交叉连接起来。 假设这是我们拥有的数据(我知道,这没有多大意义): 我试图得到的最终结果如下: | id | name | score | point | |----|------|-------|-------| | 1 | john | 20 | 10 | | 1 | john | 25 | 15 | | 2 | jane | 25 | 15 | | 2 | jane | 35 |

我试图编写一个SQL查询,将每一行与其自己的JSON数组元素交叉连接起来。 假设这是我们拥有的数据(我知道,这没有多大意义):

我试图得到的最终结果如下:

| id | name | score | point |
|----|------|-------|-------|
| 1  | john | 20    | 10    |
| 1  | john | 25    | 15    |
| 2  | jane | 25    | 15    |
| 2  | jane | 35    | 45    |

我如何编写一个执行此任务的查询?我没有创建新函数的授权,因此这必须是纯select语句,而不是plpgsql语句。

您可以使用横向连接和
json[b]\u数组元素取消请求:

select t.id, t.name, i.obj ->> 'score' as score, i.obj ->> 'point' as point
from mytable t
cross join lateral jsonb_array_elements(t.info) i(info)

这真是难以置信。如何阅读更多有关此技术的信息?我发现横向连接的东西非常复杂,我无法让它们中的任何一个工作,这一个太简单了。我真的很想了解其中的一些含义,特别是
I(info)
notation@ÖzençB.:这是一个很好的起点。见“7.2.1.5.横向子查询”一节。
select t.id, t.name, i.obj ->> 'score' as score, i.obj ->> 'point' as point
from mytable t
cross join lateral jsonb_array_elements(t.info) i(info)