Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:non è possibile specificare le "attività" della tabella di destinazione per l'aggiornamento nella clausola FROM

Puoi avvolgerlo in una sottoquery in questo modo. Il problema è che MySQL non può aggiornare le righe che sta anche interrogando. Ciò consentirà a MySQL di utilizzare implicitamente una tabella temporanea per memorizzare gli ID che desideri eliminare.

DELETE FROM tasks
WHERE tasks.id IN 
(
SELECT id FROM
(
SELECT tasks.id
FROM tasks 
    JOIN deadlines ON deadlines.id = deadline_id
WHERE DATE_ADD(tasks.created_at, INTERVAL deadlines.duration DAY) <= NOW()
) AS taskstodelete
)