我在执行以下查询时遇到MySQL错误"You‘t specify target table 'tasks’for update in FROM子句“:
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()
)我该如何管理它呢?
谢谢!
发布于 2011-05-15 17:12:14
您可以将其包装在子查询中,如下所示。问题是MySQL不能更新它也在查询的行。这将使MySQL隐式地使用临时表来存储您想要删除的ids。
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
)发布于 2011-05-15 17:09:41
这是因为您多次指定了tasks表。尝试:
DELETE FROM tasks
USING deadlines
WHERE deadlines.id = tasks.deadline_id
AND DATE_ADD(tasks.created_at, INTERVAL deadlines.duration DAY) <= NOW()https://stackoverflow.com/questions/6007489
复制相似问题