首頁  >  文章  >  資料庫  >  如何修復 MySQL UPDATE 查詢中的「Table Specified Twice」錯誤?

如何修復 MySQL UPDATE 查詢中的「Table Specified Twice」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-12 06:46:01902瀏覽

How to Fix

表指定兩次:解決MySQL 中的更新衝突

當嘗試更新既作為更新目標又作為單獨的目標的表時資料來源,MySQL 可能會引發錯誤「表'table_name' 被指定兩次,既作為'UPDATE'的目標,又作為單獨的資料來源。

具體來說,此錯誤訊息表明管理器表既用作 UPDATE 操作的目標表,又用作選擇的資料來源來自branch_master 表的資料。這種雙重引用會讓 MySQL 感到困惑。

解決方案

解決方案是將資料來源中的資料表隔離為衍生表,而派生表則是在飛來保存原始表中的資料。透過這樣做,您可以避免查詢中出現歧義。

將查詢中的以下行:

FROM manager AS m2

替換為:

FROM (select * from manager) AS m2

這將建立一個名為m2 的衍生表,包含原始管理器表中的所有數據。

已更新查詢

以下是更新後的查詢,將解決表衝突錯誤:

UPDATE manager
SET status = 'Y'
WHERE branch_id IN
(
  select branch_id
  FROM (select * from manager) AS m2
  WHERE (branch_id, year) IN
  (
    SELECT branch_id, year
    FROM branch_master
    WHERE type = 'finance'
  )
);

透過使用派生表,您可以確保管理器表僅在您的查詢,防止MySQL 遇到「表指定兩次」錯誤。

以上是如何修復 MySQL UPDATE 查詢中的「Table Specified Twice」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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