Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :vous ne pouvez pas spécifier les "tâches" de la table cible pour la mise à jour dans la clause FROM

Vous pouvez l'envelopper dans une sous-requête comme ça. Le problème est que MySQL ne peut pas mettre à jour les lignes qu'il interroge également. Cela obligera MySQL à utiliser implicitement une table temporaire pour stocker les identifiants que vous souhaitez supprimer.

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
)