Всъщност това е старомодно синтаксис за CROSS JOIN. Формален еквивалент:
SELECT
t.json_column->>'x',
nested->>'y'
FROM
my_table t
CROSS JOIN
json_array_elements(t.json_column->'nested') nested;
Заявката не произвежда декартово произведение, а действа по-скоро като вътрешно съединение. Това е така, защото има скрит препратка между две части на съединението, в този случай псевдоним t
. Този вид свързване е известно като LATERAL JOIN
. За документацията
:
Ако една от частите на съединението е функция, тя се третира като странична по подразбиране.