2010-11-15 84 views
0
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable where roll=1) 

我有一個表mytable。我上面的查詢是拋出一個錯誤。Mysql發生錯誤

您不能指定目標表「MYTABLE」的更新在FROM子句

回答

3

MySQL documentation

目前,您無法從表中刪除,並在子查詢中從同一個表中選擇。

幸運的是,您不需要子查詢。只要這樣做:

DELETE FROM mytable WHERE roll=1 

它更短,更清晰啓動。

1

爲什麼你不這樣做?

DELETE FROM mytable WHERE roll=1 
0

你爲什麼不只是寫

DELETE FROM mytable WHERE roll=1 

? 發生該錯誤的原因是,當上級查詢修改相同的表時,MySql不喜歡它在子查詢中獲取表格。

0

爲什麼不乾脆:

DELETE FROM mytable WHERE roll=1 
0

你爲什麼要使用子查詢?你可以這樣寫:

DELETE FROM mytable WHERE where roll=1; 
0

This thread解釋了爲什麼你不能這樣做。

而在這個例子中,你可以使用:

DELETE FROM mytable WHERE roll=1