在 MySQL 數(shù)據(jù)庫中,我們經(jīng)常遇到需要去除重復(fù)字段的情況,又要保留最新的一條數(shù)據(jù)。下面介紹一種實(shí)現(xiàn)方法:
DELETE FROM table_name
WHERE id NOT IN (
SELECT id FROM (
SELECT MAX(id) AS id FROM table_name
GROUP BY duplicate_field_name
) temp_table
);
代碼中,table_name 代表需要去除重復(fù)數(shù)據(jù)的表名,duplicate_field_name 代表需要去除重復(fù)的字段名,比如一個(gè)業(yè)務(wù)表中某個(gè)用戶的電話號(hào)碼發(fā)生了改變,如果我們僅僅使用 DISTINCT 關(guān)鍵字,仍然會(huì)保留這個(gè)用戶的所有電話號(hào)碼記錄,但是通過上述代碼,我們可以只保留最新的電話號(hào)碼,實(shí)現(xiàn)了去重的效果。
需要注意的是,該方法只能保留最新的一條數(shù)據(jù),如果需要保留多條最新數(shù)據(jù),則需要結(jié)合業(yè)務(wù)需求進(jìn)行相應(yīng)的改進(jìn)。