I have got MySQL error "You can't specify target table 'tasks' for update in FROM clause" running the following query:
DELETE FROM tasks
WHERE tasks.id IN
(
SELECT tasks.id
FROM tasks
JOIN deadlines ON deadlines.id = deadline_id
WHERE DATE_ADD(tasks.created_at, INTERVAL deadlines.duration DAY) <= NOW()
)
How can I manage this?
Thanx!
You can wrap it in a subquery like so. The issue is that MySQL can't update rows that it's also querying. This will make MySQL use a temporary table implicitly to store the ids you want to delete.
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
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With