You can't specify target table 'Person' for update in FROM clause
时间: 2023-12-24 15:04:08 浏览: 105
mysql中You can’t specify target table for update in FROM clause错误解决方法
这个错误通常是因为在 MySQL 的 UPDATE 语句中,FROM 子句引用了与更新的表相同的表。为了解决这个问题,你可以使用子查询来代替直接引用表名。
例如,如果你想要更新一个名为 "Person" 的表,并且你想要将所有名字为 "John" 的行的 "Age" 字段设置为 30,你可以使用以下的 SQL 语句:
```
UPDATE Person SET Age = 30 WHERE Name = 'John' AND Id IN (SELECT Id FROM (SELECT Id FROM Person WHERE Name = 'John') AS p);
```
这个语句中,我们使用了一个子查询来获取所有名字为 "John" 的行的 ID 值,然后将这些 ID 值作为更新语句的过滤条件。通过这种方式,我们就避免了在 FROM 子句中直接引用更新的表所引发的问题。
阅读全文