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

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

Susan Sarandon
Susan Sarandon原創
2024-12-23 16:11:11859瀏覽

How Can I Fix MySQL Error 1093:

克服MySQL 錯誤1093:更新FROM 子句中指定的表

嘗試更新也在其中使用的表時出現MySQL 錯誤1093同一查詢的FROM 子句。要解決此錯誤,請考慮以下方法:

將表連接到自身

如果可行,請使用適當的選擇標準將表連接到自身。這使 MySQL 能夠將表視為單獨的實體,並允許進行破壞性修改:

UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col

在 FROM子句中更深地巢狀子查詢

作為替代方案,巢狀子查詢深入FROM子句建立隱式臨時表:

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);

但是,這個方法效率較低,在某些版本中MySQL 的查詢最佳化器可能無法正確最佳化。

停用查詢最佳化器

在 MySQL 5.7.6 及更高版本中,最佳化器可能會防止子查詢策略。若要暫時停用最佳化,請設定 optimizationr_switch 變數:

SET optimizer_switch = 'derived_merge=off';

範例刪除查詢

要解決問題中提供的特定查詢,請將 Story_category表加入到類別表來識別和刪除損壞的條目:

DELETE t1
FROM story_category AS t1
INNER JOIN category AS t2
ON t1.category_id = t2.id
WHERE t2.id IS NULL;

總之,透過使用透過這些技術,您可以克服「無法在FROM 子句中指定要更新的目標表」錯誤並對資料庫表執行必要的修改。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn