mysql查找刪除重復(fù)數(shù)據(jù)并只保留一條實(shí)例詳解

有這樣一張表,表數(shù)據(jù)及結(jié)果如下:

school_id school_name total_student test_takers
1239 Abraham Lincoln High School 55 50
1240 Abraham Lincoln High School 70 35
1241 Acalanes High School 120 120
1242 Academy Of The Canyons 30 30
1243 Agoura High School 89 40
1244 Agoura High School 100 50

我們可以看出,school_name的字段值有重復(fù)數(shù)據(jù)(Abraham Lincoln High School 和Agoura High School分別出現(xiàn)兩次),那么如何刪除這兩條數(shù)據(jù),從而只讓這兩個(gè)數(shù)值出現(xiàn)一次呢? 具體實(shí)現(xiàn)方法如下:

1、刪除重復(fù)記錄,保存Id最小的一條

delete FROM `test` WHERE `school_name` in (SELECT `school_name`
FROM `test` 
GROUP BY `school_name` 
HAVING COUNT( * ) >1) and school_id not in (select min(school_id) from test group by school_id having count(* )>1)

先使用GROUP BY having語法查詢出重復(fù)的數(shù)據(jù),然后刪除重復(fù)數(shù)據(jù)并保留school_id最小的一條.

2、刪除重復(fù)記錄,保存Id最大的一條

delete FROM `test` WHERE `school_name` in (SELECT `school_name`
FROM `test` 
GROUP BY `school_name` 
HAVING COUNT( * ) >1) and school_id not in (select max(school_id) from test group by school_id having count(* )>1)

原理和上面一樣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容