問題:
今天在MySQL數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù)的時候遇到了一個問題。如下腳本:
DELETE FROM tempA WHERE tid IN ( SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age )
會出現(xiàn)報錯信息:
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 )
查詢的時候增加一層中間表,就可以避免該錯誤。
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點擊進入論壇