Tatsächlich ist das altmodisch Syntax für CROSS JOIN. Formales Äquivalent:
SELECT
t.json_column->>'x',
nested->>'y'
FROM
my_table t
CROSS JOIN
json_array_elements(t.json_column->'nested') nested;
Die Abfrage erzeugt kein kartesisches Produkt, sondern wirkt eher wie ein Inner Join. Dies liegt daran, dass es ein verstecktes hat Verweis zwischen zwei Teilen von join, in diesem Fall Alias t
. Diese Art von Join wird als LATERAL JOIN
bezeichnet . Für die Dokumentation
:
Wenn einer der Teile eines Joins eine Funktion ist, wird er standardmäßig als lateral behandelt.