SQL查詢去掉重復數據


本文主要總結數據庫去掉重復數據的方法

去掉重復數據的方法:

第一種: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)

第三種:min、max(這種方法在第二種中已經用到了)

參考:

 https://download.csdn.net/download/liangfei207/10325028

https://www.cnblogs.com/firstdream/p/7985584.html (較復雜)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM