2010-11-15 89 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