关于mysql中 1093 - You can't specify target table 'XXXX' for update in FROM clause, Time: 0.001000s

自己给自己挖坑真是可怕,写sql时碰见这么一个问题,仔细想想,自己都想打死自己…………

以下是我的sql,先暂且不说为啥这么写。我想表达的意思是:对同一张表进行操作,先查询,再将查询出来的数据作为条件去修改这张表,会报错 1093 - You can’t specify target table ‘XXXX’ for update in FROM clause, Time: 0.001000s。意思是说:无法在FROM子句中为更新指定目标表。类似sql如下:
在这里插入图片描述
那么,为什么会出现这一种情况呢?

我看网上有好多人推荐解决方案是在这两张表中间加一张中间表。如下:
在这里插入图片描述
这种添加中间表的解决方案,类似把从schedule表中查出来的id放到一张临时表a中,修改的时候访问临时表数据进行操作,就像操作了两张表。而并非在同一张表中边查询,边修改。在mysql中貌似不能操作一张表同时进行查询删除。

最后,再对比我之前写的sql……不忍直视……

仔细想想,嵌套了那么多层和这个sql有什么区别呢?自己绕了一大圈还把自己给绕进去了。
在这里插入图片描述

发布了74 篇原创文章 · 获赞 19 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43770545/article/details/90609893
今日推荐