首頁 > 資料庫 > mysql教程 > 如何解決 MySQL 錯誤 1093:「無法在 FROM 子句中指定更新目標表」?

如何解決 MySQL 錯誤 1093:「無法在 FROM 子句中指定更新目標表」?

Barbara Streisand
發布: 2024-12-17 06:12:24
原創
364 人瀏覽過

How to Resolve MySQL Error 1093:

克服MySQL 錯誤1093:「無法在FROM 子句中指定更新目標表」

遇到MyMy 錯誤1093 時,這一點很重要了解根本問題。當嘗試修改查詢的 FROM 子句中所引用的表時,會發生此錯誤。

根本原因

MySQL 不允許同時修改表格並用在 UPDATE 或 DELETE 語句的 FROM 子句中。此限制是由於兩個操作存取同一個表會產生歧義。

解決方案1:使用子查詢

一種解決方法是嵌入SELECT將損壞的條目標識為UPDATE 或DELETE 的FROM 子句中的子查詢的語句語句:

UPDATE story_category SET category_id = NULL
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
登入後複製

解2:自連接表

或者,您可以自連接表來為同一個表建立單獨的別名,從而允許您可以在引用另一個別名的同時修改其中一個別名。例如:

UPDATE story_category AS updated
INNER JOIN story_category AS original
    ON updated.category_id = original.category_id
SET updated.category_id = NULL
WHERE original.category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id
);
登入後複製

避免再次發生

刪除損壞的條目後,請考慮對Story_category 表實施約束,以防止將來出現無效條目:

ALTER TABLE story_category
ADD FOREIGN KEY (category_id) REFERENCES category(id);
登入後複製

以上是如何解決 MySQL 錯誤 1093:「無法在 FROM 子句中指定更新目標表」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板