sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL json_array_elements v klauzuli FROM – proč toto není kartézské spojení?

Ve skutečnosti je to staromódní syntaxe pro CROSS JOIN. Formální ekvivalent:

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

Dotaz nevytváří kartézský součin, ale funguje spíše jako vnitřní spojení. Je to proto, že má skryté odkaz mezi dvěma částmi spojení, v tomto případě alias t . Tento druh spojení je známý jako LATERAL JOIN . Pro dokumentaci :

Pokud je jednou z částí spojení funkce, je ve výchozím nastavení považována za laterální.




  1. Jak mohu dešifrovat hesla MySQL

  2. Dotaz vnořený do squeel

  3. jquery php vloží data do mysql bez obnovení stránky

  4. Jak předám návratový kód ze skriptu Oracle zpět do dávkového skriptu WINDOWS, který jej vyvolal?