sql >> Base de Datos >  >> RDS >> PostgreSQL

UNIRSE (SELECCIONAR ... ) ue ON 1=1?

La intención es un incondicional LEFT JOIN , que es diferente de un CROSS JOIN en que se devuelven todas las filas de la expresión de la tabla de la izquierda, incluso si no hay ninguna coincidencia en la expresión de la tabla de la derecha, mientras que CROSS JOIN elimina tales filas del resultado. Más información sobre las uniones en el manual.

Sin embargo:

1=1 no tiene sentido en Postgres y todos los derivados, incluido Amazon Redshift. Solo usa true . Esto probablemente se transfirió de otro RDBMS que no admite el boolean escriba correctamente.

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

Por otra parte, LEFT JOIN no tiene sentido para esta subconsulta en particular con SELECT MIN(modified) FROM user a la derecha, porque un SELECT con una función agregada (min() ) y sin GROUP BY cláusula siempre devuelve exactamente una fila. Este caso (pero no otros casos donde ninguna fila podría encontrarse) se puede simplificar a:

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