mysql Error1093错误

  场景演示:   mysql>, create  table 测试(id  int, name  varchar (12), primary 键(id));   Query 好吧,,0,rows  affected (0.04,秒)   mysql>, insert  into  test 价值(1,“双塔”);   Query 好吧,,1,row  affected (0.00,秒)   mysql>, insert  into  test 价值(2,“双塔”);   Query 好吧,,1,row  affected (0.00,秒)   mysql>,提交;   Query 好吧,,0,rows  affected (0.00,秒)   mysql>,, update  test  set  name=癮aaa”, where  id ,拷贝(select  id 得到测试);   ERROR  1093, (HY000):,你可以't  specify  target  table “测试”,for  update 拷贝得到条款


官方说明:,,,,,,

错误:1093 SQLSTATE: HY000 (ER_UPDATE_TABLE_USED)

信息:你不能指定目标表“% s”从条款更新

这对试图选择发生错误和修改相同的表在一个声明中。如果选择尝试发生在一个派生表,可以避免这个错误通过设置derived_merge旗optimizer_switch系统变量来迫使子查询被物化成一个临时表,有效地使它成为一个不同的表> mysql>,, update  test  set  name=癮aaa”, where  id ,拷贝(select  id 得到(select  id 得到测试)c);   Query 好吧,,2,rows  affected (0.02,秒)   Rows 匹配:,2,,改变:,2,,警告:,0

解决方法2:

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

,,,

备注:甲骨文是不会这个问题的


mysql Error1093错误