sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL json_array_elements i FROM-klausul - hvorfor er dette ikke kartesisk join?

Faktisk er dette gammeldags syntaks for CROSS JOIN. Formel ækvivalent:

SELECT
    t.json_column->>'x',
    nested->>'y'
FROM 
    my_table t
CROSS JOIN
    json_array_elements(t.json_column->'nested') nested;

Forespørgslen producerer ikke kartesisk produkt, men fungerer snarere som en indre sammenføjning. Dette er fordi den har en skjult reference mellem to dele af join, i dette tilfælde alias t . Denne type join er kendt som LATERAL JOIN . For dokumentationen :

Hvis en af ​​delene af en sammenføjning er en funktion, behandles den som lateral som standard.




  1. Sådan ændres automatisk stigningsværdi af MySQL / MariaDB-database

  2. Android Room - Sådan nulstiller du automatisk genereret tabel primær nøgle ved hver appkørsel

  3. Hvordan LYDER SOM virker i MariaDB

  4. Division af heltal giver 0