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 IN (
    SELECT t.tid FROM (
        SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
    ) t
)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章