MySQL 錯誤:在UPDATE 和來源中指定了兩表
當嘗試使用提供的SQL 查詢更新管理器表時,查詢更新管理器表時,查詢MySQL 遇到錯誤:「表'm1'被指定兩次,既作為'UPDATE'的目標,又作為單獨的資料來源。」出現此錯誤的原因是子查詢中兩次引用了表管理器。
可以透過修改子查詢以從派生表中進行選擇來解決該問題。此查詢不應直接使用別名 m2,而是應使用 SELECT 語句建立臨時表,然後從該臨時表中進行選擇。下面修改後的查詢實現了這一點:
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 可以正確區分 UPDATE 語句中使用的管理器表和子查詢中引用的管理器表。這消除了導致錯誤訊息的混亂。
以上是為什麼使用子查詢更新表時 MySQL 會拋出「Table Specified Twice」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!