PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

JOIN (WYBIERZ ... ) ue ON 1=1?

Intencja jest bezwarunkowa LEFT JOIN , który jest inny z CROSS JOIN w tym, że zwracane są wszystkie wiersze z lewego wyrażenia tabeli, nawet jeśli nie ma dopasowania w prawym wyrażeniu tabeli - podczas gdy CROSS JOIN usuwa takie wiersze z wyniku. Więcej o połączeniach znajdziesz w instrukcji.

Jednak:

1=1 nie ma sensu w Postgres i wszystkich pochodnych, w tym Amazon Redshift. Po prostu użyj true . Prawdopodobnie zostało to przeniesione z innego RDBMS, który nie obsługuje boolean wpisz poprawnie.

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

Znowu LEFT JOIN nie ma sensu dla tego konkretnego podzapytania z SELECT MIN(modified) FROM user po prawej, ponieważ SELECT z funkcją agregującą (min() ) i nie GROUP BY klauzula zawsze zwraca dokładnie jeden wiersz. Ten przypadek (ale nie inne przypadki, w których brak wiersza można znaleźć) można uprościć do:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać problemy z uprawnieniami podczas przywracania bazy danych PostgreSQL

  2. mysql_insert_id alternatywa dla postgresql

  3. psql - zapisz wyniki polecenia do pliku

  4. Wstaw obraz do bazy postgresql

  5. Jak monitorować PostgreSQL działający w kontenerze Dockera:część druga