Możesz umieścić go w podzapytaniu w ten sposób. Problem polega na tym, że MySQL nie może aktualizować wierszy, które również wykonuje zapytania. To sprawi, że MySQL użyje tymczasowej tabeli do przechowywania identyfikatorów, które chcesz usunąć.
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
)