問題:
今天在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 )
查詢的時候增加一層中間表,就可以避免該錯誤。