0
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable where roll=1)

我有一张桌子mytable。我上面的查询抛出了一个错误。

您不能在 FROM 子句中指定目标表“mytable”进行更新

4

6 回答 6

3

MySQL 文档

目前,您不能在子查询中从表中删除并从同一个表中选择。

幸运的是,您不需要子查询。做就是了:

DELETE FROM mytable WHERE roll=1

启动时更短更清晰。

于 2010-11-15T09:25:17.213 回答
1

你为什么不这样做呢?

DELETE FROM mytable WHERE roll=1
于 2010-11-15T09:25:34.987 回答
0

你为什么不写

DELETE FROM mytable WHERE roll=1

? 发生错误是因为 MySql 不喜欢它在上级查询修改同一个表时从子查询中的表中获取。

于 2010-11-15T09:25:50.463 回答
0

为什么不简单:

DELETE FROM mytable WHERE roll=1
于 2010-11-15T09:26:05.523 回答
0

你为什么使用子查询?你可以这样写:

DELETE FROM mytable WHERE where roll=1;
于 2010-11-15T09:27:01.817 回答
0

这个线程解释了为什么你不能这样做。

在这个例子中,你可以使用:

DELETE FROM mytable WHERE roll=1
于 2010-11-15T09:27:02.063 回答