码迷,mamicode.com
首页 > 数据库 > 详细

MySQL delete语句的问题

时间:2018-06-26 12:24:37      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:更新   ble   abc   大神   from   _id   执行   IV   spec   

以前遇到过几次这个问题,都觉得问题不大,所以没有记录,但是这次又遇到了,而且没有第一时间想起来,所以还是有记录下的必要

MySQL    delete语句使用子查询操作同一张表的时候会抛出

DELETE from abc where id in (select c.id from abc c where c.C_ID is null )

 

[Err] 1093 - You cant specify target table abc for update in FROM clause

解决办法:加上一个虚拟中间表中转一下

DELETE from abc where id in (select * from (select c.ID from abc c where c.C_ID is null) s  );

在更新的时候也会存在同样的问题

解决到了,但是原理是什么?不清楚,希望有大神看到后指教下,谢谢。

还有一个问题,删除的时候是不能起别名的

delete from abc s where s.ID = qeq;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near s where s.ID = qeq‘‘ at line 1

别名拿掉就可以正常执行了

MySQL delete语句的问题

标签:更新   ble   abc   大神   from   _id   执行   IV   spec   

原文地址:https://www.cnblogs.com/M4AkAcr/p/9228161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!