1. 程式人生 > 其它 >SQL查詢去掉重複資料

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 (較複雜)

 

本文主要總結資料庫去掉重複資料的方法

去掉重複資料的方法:

第一種: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 (較複雜)