L'intention est un inconditionnel LEFT JOIN
, qui est différent à partir d'un CROSS JOIN
en ce que toutes les lignes de l'expression de table de gauche sont renvoyées, même s'il n'y a pas de correspondance dans l'expression de table de droite - alors qu'un CROSS JOIN
supprime ces lignes du résultat. Plus d'informations sur les jointures dans le manuel.
Cependant :
1=1
est inutile dans Postgres et tous les dérivés, y compris Amazon Redshift. Utilisez simplement true
. Cela a probablement été repris d'un autre SGBDR qui ne prend pas en charge le boolean
tapez correctement.
... LEFT JOIN (SELECT ...) ue ON true
Encore une fois, LEFT JOIN
est inutile pour cette sous-requête particulière avec SELECT MIN(modified) FROM user
à droite, car un SELECT
avec une fonction d'agrégation (min()
) et pas de GROUP BY
clause renvoie toujours exactement une ligne. Ce cas (mais pas les autres cas où aucune ligne peut être trouvé) peut être simplifié en :
... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue