You can't specify target table 'Nor_SmpTubeType' for update in FROM clause
时间: 2023-12-24 13:05:59 浏览: 57
mysql中You can’t specify target table for update in FROM clause错误解决方法
这是一个错误提示,出现这个错误通常是因为在MySQL的UPDATE语句中,用到了更新与查询同一张表的语法,也就是所谓的子查询语法,在MySQL中子查询会暂时创建出一张临时表,而UPDATE语句不能直接更新临时表,所以就会出现这个错误。
解决方法可以采用两种方式:
1.使用临时表存储查询结果,再进行更新操作:
```
CREATE TEMPORARY TABLE tmp_table AS
SELECT * FROM Nor_SmpTubeType WHERE {条件};
UPDATE Nor_SmpTubeType SET {更新字段}
WHERE {条件} AND Id IN (SELECT Id FROM tmp_table);
```
2.使用多表连接语法:
```
UPDATE Nor_SmpTubeType SET {更新字段}
WHERE {条件} AND Id IN (
SELECT t1.Id FROM Nor_SmpTubeType AS t1,
(SELECT Id FROM Nor_SmpTubeType WHERE {条件}) AS t2
WHERE t1.Id = t2.Id
);
```
希望能够解决你的问题。
阅读全文