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

2020-09-24 08:18:29

寫在前面: 我是 「揚帆向海」,這個暱稱來源於我的名字以及女朋友的名字。我熱愛技術、熱愛開源、熱愛程式設計。技術是開源的、知識是共用的

這部落格是對自己學習的一點點總結及記錄,如果您對 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即可避免這個報錯。

在這裡插入圖片描述


如果覺得文章對你有點幫助,請微信搜尋「 程式猿程式設計 」第一時間閱讀!

搬磚的道路上我們一起努力,用雙手敲出我們的未來!

在這裡插入圖片描述


由於水平有限,本部落格難免有不足,懇請各位大佬不吝賜教!