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

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

Mary-Kate Olsen
發布: 2024-12-17 10:59:26
原創
663 人瀏覽過

How Can I Resolve MySQL Error 1093: Can't Specify Target Table for Update in FROM Clause?

MySQL 錯誤1093:了解FROM 子句中表格更新的限制

MySQL 錯誤「您無法指定目標表'table_name」當🎜>

MySQL 錯誤「您無法指定目標表'table_name」當🎜>

MySQL 錯誤「您無法指定目標表'table_name」當🎜>MySQL 錯誤「您無法指定目標表'table_name」當🎜>MySQL 錯誤「您無法指定目標表'table_name」。從表格自己的SELECT 語句中修改表格時,會出現「for update in FROM 子句」。此限制源自於 MySQL 無法在相同操作中同時更新和引用表。

解決錯誤
  • 要解決這個問題,請考慮以下方法:
加入表格它本身:
UPDATE story_category a
INNER JOIN story_category b ON a.category_id = b.category_id
SET a.category_id = ...
登入後複製
    重新排列查詢以在表上執行自聯接,建立臨時表。這允許對原始表進行更新:

更深地嵌套子查詢:
UPDATE story_category
SET category_id = (
  SELECT id
  FROM (
    SELECT id
    FROM category
    EXCEPT
    SELECT DISTINCT category_id
    FROM story_category
  ) AS x
)
登入後複製
    將標識損壞條目的子查詢嵌套在另一個子查詢中,建立隱式臨時表:

停用查詢最佳化器:
SET optimizer_switch = 'derived_merge=off';
登入後複製

對於MySQL 版本 5.7.6 及更高版本,最佳化器可能會嘗試刪除子查詢。為了防止這種情況,請停用optimizer_switch:

注意:停用查詢最佳化器不是建議的長期解決方案,只能用作臨時修復。考慮更有效的資料庫維護的替代方法。

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

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