錯誤:You can't specify target table 'xxx' for update in FROM clause的解決


問題:  

  今天在MySQL數據庫刪除重復數據的時候遇到了一個問題。如下腳本:

DELETE FROM tempA WHERE tid IN (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
)

  會出現報錯信息:

  You can't specify target table 'tempA' for update in FROM clause

  大致意思是,在同一語句中,不能先select出同一表中的某些值,再update這個表。

 

解決方法:

  需要對上述腳本進行改造,如下:

DELETE FROM tempA WHERE tid NOT IN (
SELECT t.tid FROM (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
) t
)

  查詢的時候增加一層中間表,就可以避免該錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM