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