Déjame explicarte un poco más con mi ejemplo.
Tarea: información correcta, donde los abiturients (estudiantes a punto de abandonar la escuela secundaria) han presentado solicitudes a la universidad antes de que obtuvieran certificados escolares (sí, obtuvieron certificados antes de que fueran emitidos (por la fecha del certificado especificada). aumente la fecha de envío de la solicitud para que se ajuste a la fecha de emisión del certificado.
Así. siguiente declaración similar a MySQL:
UPDATE applications a
JOIN (
SELECT ap.id, ab.certificate_issued_at
FROM abiturients ab
JOIN applications ap
ON ab.id = ap.abiturient_id
WHERE ap.documents_taken_at::date < ab.certificate_issued_at
) b
ON a.id = b.id
SET a.documents_taken_at = b.certificate_issued_at;
Se convierte en PostgreSQL de tal manera
UPDATE applications a
SET documents_taken_at = b.certificate_issued_at -- we can reference joined table here
FROM abiturients b -- joined table
WHERE
a.abiturient_id = b.id AND -- JOIN ON clause
a.documents_taken_at::date < b.certificate_issued_at -- Subquery WHERE
Como puede ver, JOIN
la ON
cláusula de la subconsulta original se ha convertido en una de las WHERE
condiciones, que se conjuga AND
con otras, que se han movido de la subconsulta sin cambios. Y ya no hay necesidad de presentar una JOIN
tabla consigo mismo (como estaba en la subconsulta).