PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

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


A intenção é um incondicional LEFT JOIN , que é diferente de um CROSS JOIN em que todas as linhas da expressão da tabela esquerda são retornadas, mesmo se não houver correspondência na expressão da tabela direita - enquanto um CROSS JOIN elimina essas linhas do resultado. Mais sobre junções no manual.

No entanto:

1=1 é inútil no Postgres e todos os derivados, incluindo Amazon Redshift. Basta usar true . Isso provavelmente foi transferido de outro RDBMS que não suporta o boolean digite corretamente.
... LEFT JOIN (SELECT  ...) ue ON true

Então, novamente, LEFT JOIN é inútil para esta subconsulta em particular com SELECT MIN(modified) FROM user à direita, porque um SELECT com uma função agregada (min() ) e não GROUP BY cláusula sempre retorna exatamente uma linha. Este caso (mas não outros casos em que nenhuma linha pode ser encontrado) pode ser simplificado para:
... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue