首页 > 数据库 > mysql教程 > 如何解决 MySQL 错误 1093:'您无法在 FROM 子句中指定用于更新的目标表 'table_name'”?

如何解决 MySQL 错误 1093:'您无法在 FROM 子句中指定用于更新的目标表 'table_name'”?

Patricia Arquette
发布: 2024-12-24 15:12:15
原创
610 人浏览过

How to Solve MySQL Error 1093:

MySQL 错误 1093:理解并克服限制

在 MySQL 中,尝试修改也在 FROM 子句中引用的表相同的查询可能会导致错误:“您无法在 FROM 子句中指定用于更新的目标表 'table_name'。”此限制是由于 MySQL 无法直接执行此类操作。

要解决此问题,可以考虑以下几种方法:

将表连接到自身

一种选择是使用适当的选择标准将表与其自身连接起来,从 MySQL 的角度创建表的两个不同实例。这允许在一个实例上执行破坏性操作,同时保持另一个实例不变。

在 FROM 子句中嵌套子查询

另一种解决方法是嵌套生成目标的子查询更深层次的 FROM 子句中要删除的行。这会根据子查询创建一个隐式临时表,MySQL 将其识别为与目标表不同的实体。但是,这种方法可能会影响性能。

禁用优化器优化(MySQL 5.7.6 及更高版本)

从 MySQL 5.7.6 开始,优化器可能会优化FROM 子句中的子查询,导致错误持续存在。要解决此问题,请使用 Optimizer_switch 变量禁用优化:

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

请注意,建议将其作为短期解决方案或用于小型一次性任务,因为它可能会对整体查询性能产生负面影响。

结论

错误“您无法指定目标表 'table_name' update in FROM 子句”源于 MySQL 在修改也在 FROM 子句中使用的表时的限制。通过采用上述方法,开发人员可以克服此限制并对其数据执行所需的操作。

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

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