首页 > 数据库 > mysql教程 > 如何解决MySQL错误1093:无法在FROM子句中指定目标表?

如何解决MySQL错误1093:无法在FROM子句中指定目标表?

Susan Sarandon
发布: 2024-12-22 07:29:09
原创
583 人浏览过

How to Solve MySQL Error 1093: Can't Specify Target Table in FROM Clause?

MySQL 错误 1093:无法在 FROM 子句中指定目标表

当尝试对引用中引用的表执行更新查询时FROM子句,你可能会遇到MySQL错误1093。这是因为MySQL禁止修改直接参与选择的表过程。

一种替代方法是将表与其自身连接。通过为表创建别名,您可以多次从中选择并修改原始表,而不会出现错误:

UPDATE tbl AS a
INNER JOIN tbl AS b ON a.id = b.id
SET a.col = b.col
登录后复制

另一个解决方案是将子查询更深地嵌套在FROM子句中:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);
登录后复制

此解决方法从子查询创建隐式临时表,允许更新而不会出现错误。但是,这种方法可能会对性能产生影响。

需要注意的是,在 MySQL 5.7.6 及更高版本中,优化器可能会优化子查询,从而导致相同的错误。如果您遇到这种情况,请考虑暂时禁用优化:

SET optimizer_switch = 'derived_merge=off';
登录后复制

以上是如何解决MySQL错误1093:无法在FROM子句中指定目标表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板