mysql报错ERROR 1093

发布时间:2020-08-11 09:54:02 作者:贺子_DBA时代
阅读:277
mysql云数据库,弹性扩容,低至0.3元/天! 查看>>
今天在尝试用子查询来关联更新一个表的收到如下报错:
ERROR 1093 (HY000): You can't specify target table 'v_member_info' for update in FROM clause
具体执行的sql如下:
MySQL [meminfo]> update v_member_info set cust_right_group=0 where id in (select id from v_member_info where pay_end_date<'2018-01-29' and cust_right_group>0);
ERROR 1093 (HY000): You can't specify target table 'v_member_info' for update in FROM clause
原来是mysql在update的时候, 原始表不能出现在where 后面第一层的子查询中;
解决办法:两种改写方法
1)改写成join方式更新
MySQL [meminfo]> update v_member_info as a ,(select id,cust_right_group from v_member_info where pay_end_date<'2018-01-29' and cust_right_group>0) as b set a.cust_right_group=0 where a.id=b.id;
Query OK, 288 rows affected (2.35 sec)
Rows matched: 288 Changed: 288 Warnings: 0
2)或者改成子查询之子查询
MySQL [meminfo]> update v_member_info set cust_right_group=0 where id in(select id from (select id from v_member_info where pay_end_date<'2018-01-29' and cust_right_group>0)a);
小结:Oracle和MySQL还是有区别的,MySQL在update的时候,原始表不能出现在where 后面第一层的子查询当中,至于两种改写的性能的看具体业务和数据量的大小。

亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

推荐阅读:
  1. mysql Error1093错误
  2. mysql:error 1093 update子查询

开发者交流群:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:http://blog.itpub.net/29654823/viewspace-2151383/

1093 error mysql

上一篇:Oracle监听的静态注册和动态注册

下一篇:潍坊SEO:外链优化的详谈

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
开发者交流群×