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

UNISCITI (SELEZIONA ... ) ue ON 1=1?

L'intenzione è un incondizionato LEFT JOIN , che è diverso da un CROSS JOIN in quanto vengono restituite tutte le righe dell'espressione della tabella di sinistra, anche se non c'è corrispondenza nell'espressione della tabella di destra, mentre un CROSS JOIN elimina tali righe dal risultato. Maggiori informazioni sui join nel manuale.

Tuttavia:

1=1 è inutile in Postgres e tutti i derivati, incluso Amazon Redshift. Usa semplicemente true . Questo è stato probabilmente trasferito da un altro RDBMS che non supporta il boolean digita correttamente.

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

Poi di nuovo, LEFT JOIN è inutile per questa particolare sottoquery con SELECT MIN(modified) FROM user a destra, perché un SELECT con una funzione aggregata (min() ) e nessun GROUP BY la clausola restituisce sempre esattamente una riga. Questo caso (ma non altri casi in cui nessuna riga potrebbe essere trovato) può essere semplificato in:

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