MySql报错 1093 - You can’t specify target table xxx for update in FROM clause

写在前面: 我是 「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的

这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

用知识改变命运,让我们的家人过上更好的生活

在开发中MySQL遇到了这样的一个错误 1093 - You can’t specify target table 'person' for update in FROM clause,下面我就以力扣的一道题目为例进行分析。

一、题目来源

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+

例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+

提示

  • 执行 SQL 之后,输出是整个 Person 表。
  • 使用 delete 语句。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-duplicate-emails
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、错误分析

在这里插入图片描述

这是因为MySQL不允许同时更新和删除一张表,也就是你不能以一个查询的结果为条件 进行修改或删除

三、解决办法

使用中间表将查询结果再次SELECT即可避免这个报错。

在这里插入图片描述


如果觉得文章对你有点帮助,请微信搜索「 程序猿编程 」第一时间阅读!

搬砖的道路上我们一起努力,用双手敲出我们的未来!

在这里插入图片描述


由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!

猜你喜欢

转载自blog.csdn.net/weixin_43570367/article/details/108733195