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

PŘIPOJIT (VYBRAT ... ) ue ON 1=1?

Záměr je bezpodmínečný LEFT JOIN , která je jiná z CROSS JOIN v tom, že jsou vráceny všechny řádky z levého tabulkového výrazu, i když v pravém tabulkovém výrazu není žádná shoda – zatímco CROSS JOIN vypustí takové řádky z výsledku. Více o připojení v manuálu.

Nicméně:

1=1 je nesmyslné v Postgres a všech derivátech včetně Amazon Redshift. Stačí použít true . Toto bylo pravděpodobně přeneseno z jiného RDBMS, který nepodporuje boolean zadejte správně.

... LEFT JOIN (SELECT  ...) ue ON true

Potom znovu LEFT JOIN je pro tento konkrétní dílčí dotaz s SELECT MIN(modified) FROM user zbytečné napravo, protože SELECT s agregační funkcí (min() ) a žádné GROUP BY klauzule vždy vrací přesně jeden řádek. Tento případ (nikoli však jiné případy, kdy žádný řádek může být nalezen) lze zjednodušit na:

... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue


  1. Co je JDBC protějšek Postgres' \connect příkazu?

  2. Postgres INTERVAL pomocí hodnoty z tabulky

  3. MySQL ISNULL() Vysvětleno

  4. Jak funguje operátor RLIKE v MySQL