2011-05-15 98 views
4

我有MySQL錯誤「您不能指定目標表‘任務’在FROM子句更新」運行下面的查詢:MySQL的:你不能指定目標表「任務」的更新在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() 
) 

我該如何管理?

Thanx!

回答

10

你可以把它包裝在像這樣的子查詢中。問題是MySQL無法更新它也在查詢的行。這將使MySQL使用一個臨時表隱式存儲你想要刪除的id。

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 
) 
+0

它的工作原理 - 謝謝! – ohavryl 2011-05-15 09:58:30

1

這是因爲你不止一次地指定了任務表。試試:

DELETE FROM tasks 
USING deadlines 
WHERE deadlines.id = tasks.deadline_id 
AND DATE_ADD(tasks.created_at, INTERVAL deadlines.duration DAY) <= NOW() 
+0

它說:「MULTI DELETE中的未知表格任務」 – ohavryl 2011-05-15 09:57:23

+0

無論如何謝謝! – ohavryl 2011-05-15 09:58:48

相關問題