Was ist das erwartete Verhalten für mehrere set-return-Funktionen in der select-Klausel?
Ich versuche, einen "Cross Join" mit dem Ergebnis von zwei Set-Return-Funktionen zu erhalten, aber in einigen Fällen erhalte ich keinen "Cross Join", siehe Beispiel
Verhalten 1: Wenn die eingestellten Längen gleich sind, werden die Elemente der einzelnen Sätze
postgres=# SELECT generate_series(1,3), generate_series(5,7) order by 1,2; generate_series | generate_series -----------------+----------------- 1 | 5 2 | 6 3 | 7 (3 rows)
Verhalten 2: Wenn die eingestellten Längen unterschiedlich sind, werden die Sätze durch "Cross-Join" verbunden
postgres=# SELECT generate_series(1,2), generate_series(5,7) order by 1,2; generate_series | generate_series -----------------+----------------- 1 | 5 1 | 6 1 | 7 2 | 5 2 | 6 2 | 7 (6 rows)
Ich glaube, ich verstehe hier etwas nicht, kann jemand das erwartete Verhalten erklären?
BEARBEITE: ein anderes Beispiel, seltsamer als das vorherige
postgres=# SELECT generate_series(1,2) x, generate_series(1,4) y order by x,y; x | y ---+--- 1 | 1 1 | 3 2 | 2 2 | 4 (4 rows)
(HINWEIS: Ich akzeptiere die Antwort, die die Titelfrage mit dem Link zur Dokumentation beantwortet.)