MySQL error———You can't specify target table 's' for update in FROM clause

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/G090909/article/details/79516475

[Err] 1093 - You can’t specify target table ‘s’ for update in FROM clause

执行SQL语句时出现这个错误。原因是在更新这个表和数据时又查询了它,而查询的数据又做了更新的条件。

MySQL不允许在修改表S的同时在其子查询中使用到表S,但是可以通过在子查询中在嵌套一层针对表S的子查询,因为最里层的子查询产生的结果存在临时表中,与表S没有关系。

网上给出的解决办法: 把要更新的几列数据查询出来做为一个第三方表,然后筛选更新。
即:把类似于 UPDATE S … WHERE col = (SELECT … FROM S …); 改写成UPDATE S… WHERE col = (SELECT (SELECT … FROM S…) AS S1…);

猜你喜欢

转载自blog.csdn.net/G090909/article/details/79516475
今日推荐