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

Eliminar usando la combinación externa izquierda en Postgres

Como han señalado otros, no puede LEFT JOIN directamente en una instrucción DELETE. Sin embargo, puede unirse a sí mismo en una clave principal a la tabla de destino con una instrucción USING y luego unirse a la izquierda contra esa tabla autounida.

DELETE FROM tv_episodes
USING tv_episodes AS ed
LEFT OUTER JOIN data AS nd ON
   ed.file_name = nd.file_name AND 
   ed.path = nd.path
WHERE
   tv_episodes.id = ed.id AND
   ed.cd_name = 'MediaLibraryDrive' AND nd.cd_name IS NULL;

Tenga en cuenta la unión automática en tv_episodes.id en la cláusula WHERE. Esto evita la ruta de subconsulta proporcionada anteriormente.