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

JOIN (VÆLG ... ) ue ON 1=1?

Hensigten er en ubetinget LEFT JOIN , hvilket er anderledes fra en CROSS JOIN ved at alle rækker fra det venstre tabeludtryk returneres, selvom der ikke er noget match i det højre tabeludtryk - mens en CROSS JOIN taber sådanne rækker fra resultatet. Mere om joinforbindelser i manualen.

Dog:

1=1 er meningsløst i Postgres og alle derivater inklusive Amazon Redshift. Brug bare true . Dette er sandsynligvis blevet overført fra et andet RDBMS, der ikke understøtter boolean skriv korrekt.

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

Så igen, LEFT JOIN er meningsløst for denne særlige underforespørgsel med SELECT MIN(modified) FROM user til højre, fordi en SELECT med en aggregeret funktion (min() ) og ingen GROUP BY klausul returnerer altid nøjagtig én række. Dette tilfælde (men ikke andre tilfælde, hvor ingen række kan findes) kan forenkles til:

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


  1. Hvordan kan jeg starte PostgreSQL-server på Mac OS X?

  2. Opsamling af tæller fra en SQL-forespørgsel

  3. Hvad svarer til 'beskriv tabel' i SQL Server?

  4. Heroku Postgres:psql:FATAL:ingen pg_hba.conf-indgang for vært