如何解決MySQL更新和查詢同一個表格時出現「Table Specified Twice」錯誤?

Mary-Kate Olsen
發布: 2024-11-11 20:48:02
原創
470 人瀏覽過

How to Resolve MySQL Error

錯誤:在MySQL 查詢中指定了兩次表

在MySQL 中,當嘗試更新表並同時將其用作數據來源時相同的查詢,可能會出現錯誤「表'm1'被指定兩次,既作為'UPDATE'的目標,又作為單獨的資料來源」。此錯誤源自於 MySQL 在處理此類查詢時的限制。

為了解決此問題,MySQL 要求使用者從衍生表中進行選擇,而不是直接在子查詢中使用表格的別名。這涉及到基於原始表創建臨時表並在子查詢中引用派生表。

修訂的查詢:

這裡是查詢的修訂版本:利用派生表來規避錯誤:

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'
  )
);
登入後複製

透過從派生表中選擇(由“(SELECT * FROM manager) AS m2”),該查詢避免了導致先前錯誤的歧義。派生表充當獨立的資料來源,使查詢能夠引用該表,既作為更新的目標,又作為子查詢的資料來源。

以上是如何解決MySQL更新和查詢同一個表格時出現「Table Specified Twice」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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