首页 > 数据库 > mysql教程 > 如何修复 MySQL 错误 1093:'无法在 FROM 子句中指定要更新的目标表”?

如何修复 MySQL 错误 1093:'无法在 FROM 子句中指定要更新的目标表”?

Susan Sarandon
发布: 2024-12-23 16:11:11
原创
891 人浏览过

How Can I Fix MySQL Error 1093:

克服 MySQL 错误 1093:更新 FROM 子句中指定的表

尝试更新也在其中使用的表时出现 MySQL 错误 1093同一查询的 FROM 子句。要解决此错误,请考虑以下方法:

将表连接到自身

如果可行,请使用适当的选择标准将表连接到自身。这使 MySQL 能够将表视为单独的实体,并允许进行破坏性修改:

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

在 FROM 子句中更深地嵌套子查询

作为替代方案,嵌套子查询深入FROM子句创建隐式临时表:

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

但是,这个方法效率较低,在某些版本中 MySQL 的查询优化器可能无法正确优化。

禁用查询优化器

在 MySQL 5.7.6 及更高版本中,优化器可能会防止子查询策略。要暂时禁用优化,请设置 optimizationr_switch 变量:

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

示例删除查询

要解决问题中提供的特定查询,请将 Story_category 表加入到类别表来识别和删除损坏的条目:

DELETE t1
FROM story_category AS t1
INNER JOIN category AS t2
ON t1.category_id = t2.id
WHERE t2.id IS NULL;
登录后复制

总之,通过使用通过这些技术,您可以克服“无法在 FROM 子句中指定要更新的目标表”错误并对数据库表执行必要的修改。

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

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