MySQL delete语句的问题

Posted 檩木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL delete语句的问题相关的知识,希望对你有一定的参考价值。

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

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语句的问题的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 中delete删除sql语句用法

导致 mySQL 服务器实例关闭的 DELETE 语句?

MySQL DELETE 语句

mysql-回复DELETE数据

零基础带你学习MySQL—Delete语句以及注意事项

MySQL DELETE语句和TRUNCATE TABLE语句的区别