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, JOINla ONcláusula de la subconsulta original se ha convertido en una de las WHEREcondiciones, que se conjuga ANDcon otras, que se han movido de la subconsulta sin cambios. Y ya no hay necesidad de presentar una JOINtabla consigo mismo (como estaba en la subconsulta).