我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql Error1093错误

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql Error1093错误

场景演示:
mysql> create table test(id int,name varchar(12),primary key(id));
Query OK, 0 rows affected (0.04 sec)
mysql> insert into test values(1,'ttt');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test values(2,'ttt');
Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql>  update test set name='aaaa' where id  in (select id from test);
ERROR 1093 (HY000): You can't specify target table 'test' for update in FROM clause


官方说明:            

Error: 1093 SQLSTATE: HY000 (ER_UPDATE_TABLE_USED)

Message: You can't specify target table '%s' for update in FROM clause

This error occurs for attempts to select from and modify the same table within a single statement. If the select attempt occurs within a derived table, you can avoid this error by setting the derived_merge flag of the optimizer_switch system variable to force the subquery to be materialized into a temporary table, which effectively causes it to be a different table from the one modified. See Section 9.2.2.3, “Optimizing Derived Tables and View References”.


mysql不支持,在一条语句对同一个表,先查询再更新的操作。

解决方法1:改成sql

比如:利用临时表 

mysql>  update test set name='aaaa' where id  in (select id from (select id from test)c);
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2  Changed: 2  Warnings: 0

解决方法2:

官方说:可以通过设置optimizer_switch的 derived_merge参数来解决。

    

备注:Oracle是不会这个问题的


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql Error1093错误

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL-错误:2059

MySQL-错误:2059-Authentication plugin "caching_sha2_password" cannot be loaded一 现象使用docker镜像创建容器后,mysql测试连接不成功二 原因网上查询得到原因:在mysql8之前
MySQL-错误:2059
2014-08-04

PHPCMS2008 MySQL Errno:1064错误

关键字描述:错误 mysql 问题 NOT NULL 数据库 安装 unsigned tinyintphpcms2008安装最后一步出现MySQL Errno : 1064错误,在线等!MySQL Query : CREATE TABLE
2022-06-12

mysql启动报mariadb错误

当 mysql 启动时出现 mariadb 错误,原因通常是系统中同时安装了 mysql 和 mariadb 且端口相同。解决方法包括:1. 仅安装 mysql;2. 修改 mysql 端口;3. 禁用 mariadb;4. 卸载 mari
mysql启动报mariadb错误
2024-08-01

如何解决MySQL报错:语法错误

要解决MySQL报错:语法错误,可以按照以下步骤进行处理:1. 仔细检查SQL语句:首先检查SQL语句是否有拼写错误或者语法错误。确保所有的关键字、表名、列名等都是正确的,并且符合MySQL的语法规范。2. 使用MySQL命令行工具:如果报
2023-10-10

mysql 113错误如何解决

这篇文章主要介绍“mysql 113错误如何解决”,在日常操作中,相信很多人在mysql 113错误如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql 113错误如何解决”的疑惑有所帮助!接下来
2023-02-15

php如何输出mysql错误

本篇内容介绍了“php如何输出mysql错误”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php输出mysql错误的方法:1、新建一个php
2023-07-04

mysql错误2002怎么解决

解决 mysql 错误 2002:检查网络连接和防火墙设置。验证连接信息(用户名、密码、主机名称)。检查 mysql 服务器状态,并验证其配置(bind-address、port、max_connections)。重启 mysql 服务器。
mysql错误2002怎么解决
2024-05-22

编程热搜

目录