mysql刪除重複資料只保留id最大一條記錄
阿新 • • 發佈:2019-02-17
一:首先是這麼想的
DELETE
FROM
t_4g_phone
WHERE
id NOT IN (
SELECT
max(b.id) AS id
FROM
t_4g_phone b
GROUP BY
b.SERIAL_NUMBER
)
發現在mysql中會報錯
錯誤資訊:[Err] 1093 - You can't specify target table 't_4g_phone' for update in FROM clause
於是查資料說是不能先select出同一表中的某些值,再update這個表(在同一語句中)
二:正確寫法
DELETE
FROM
t_4g_phone
WHERE
id NOT IN (
SELECT
id
FROM
(
SELECT
max(b.id) AS id
FROM
t_4g_phone b
GROUP BY
b.SERIAL_NUMBER
) b
)
也就是說將select出的結果再通過中間表select一遍,這樣就規避了錯誤。注意,這個問題只出現於mysql,mssql和oracle不會出現此問題