Detta är faktiskt gammaldags syntax för CROSS JOIN. Formell motsvarighet:
SELECT
t.json_column->>'x',
nested->>'y'
FROM
my_table t
CROSS JOIN
json_array_elements(t.json_column->'nested') nested;
Frågan producerar inte kartesisk produkt utan fungerar snarare som en inre sammanfogning. Detta beror på att den har en dold referens mellan två delar av join, i detta fall alias t
. Den här typen av koppling kallas LATERAL JOIN
. För dokumentationen
:
Om en av delarna av en sammanfogning är en funktion behandlas den som lateral som standard.