• ADADADADAD

    mysql报错ERROR 1093[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:13:07

    作者:文/会员上传

    简介:

    今天在尝试用子查询来关联更新一个表的收到如下报错:ERROR 1093 (HY000): You can't specify target table 'v_member_info' for update in FROM clause具体执行的sql如下:MyS

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    今天在尝试用子查询来关联更新一个表的收到如下报错:ERROR 1093 (HY000): You can't specify target table 'v_member_info' for update in FROM clause具体执行的sql如下:MySQL [meminfo]> updatev_member_info set cust_right_group=0 where id in (select idfrom v_member_infowhere pay_end_date<'2018-01-29' andcust_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]> updatev_member_info as a ,(select id,cust_right_group from v_member_infowhere pay_end_date<'2018-01-29' andcust_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: 288Changed: 288Warnings: 02)或者改成子查询之子查询MySQL [meminfo]> updatev_member_infoset cust_right_group=0 where id in(select id from (select idfromv_member_infowhere pay_end_date<'2018-01-29' andcust_right_group>0)a);小结:Oracle和MySQL还是有区别的,MySQL在update的时候,原始表不能出现在where 后面第一层的子查询当中,至于两种改写的性能的看具体业务和数据量的大小。
    mysql报错ERROR 1093.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: 1093errormysql