sql刪除重復數據的方法:1、使用“distinct”關鍵字去除重復數據,語法“select distinct 字段名 from 表名”;2、使用“group by + count + min”關鍵字結合方案先查出重復的數據,再指定某個條件去掉重復數據即可。
第一種:distinct
根據單個字段去重,能精確去重;
作用在多個字段時,只有當這幾個字段的完全相同時,才能去重;
關鍵字distinct只能放在SQL語句中的第一個,才會起作用
上圖舉例說明:圖中student_name 為 test的同學有兩位,不同的是班級
首先,單個字段 -》用distinct對student_name 進行篩選,單個字段查詢的話,可以看到已經將一個重復的test學生記錄去掉了
應用在多個字段時,可以看到此時兩個同名的test,都被查出來;應用在多個字段時,只有當多個字段重復才會去重
一般用來返回不重復的記錄條數,返回不重復的條數(去掉test重復的,就剩下6條)
第二種:group by + count + min 去掉重復數據
沒有加group by之前,有兩條班級名稱一樣的數據
加上group by 后,會將重復的數據去掉了
count + group +min:去掉重復數據
首先根據查出重復的數據
然后再加上id不在查詢結果里面的,去掉重復數據
SELECT * from tb_class where classname in (SELECT classname from tb_class GROUP BY classname HAVING COUNT(classname)>1)
and id NOT in (SELECT min(id) from tb_class GROUP BY classname HAVING count(classname)>1)