distinct 與group by 去重


   mysql中常用去重復數據的方法是使用 distinct  或者group by ,以上2種均能實現,但2者也有不同的地方。

distinct 特點:

如:select  distinct   name, sex,from tb_students  這個sql的語法中,查詢 tb_students  表中 name, sex,並去除名字和性別都重復的學生:

  1、distinct 只能放在查詢字段的最前面,不能放在查詢字段的中間或者后面。

備注:select   sex,distinct   name from tb_students  這種寫法是錯誤的,distinct   只能寫在所有查詢字段的前面

  2、distinct 對后面所有的字段均起作用,即 去重是查詢的所有字段完全重復的數據,而不是只對 distinct   后面連接的單個字段重復的數據。

備注:也就是 distinct   關鍵字對 name, sex 都起作用,去重姓名、性別完全一樣的學生,如果姓名相同、性別不同是不會去重的。

  3、要查詢多個字段,但只針對一個字段去重,使用distinct去重的話是無法實現的。

 

group by 特點:

  1、一般與聚類函數使用(如count()/sum()等),也可單獨使用。

  2、group by 也對后面所有的字段均起作用,即 去重是查詢的所有字段完全重復的數據,而不是只對 group by后面連接的單個字段重復的數據。

  3、查詢的字段與group by 后面分組的字段沒有限制。

特別說明:在oracle中使用group by時,查詢的字段必須是group by 分組的字段和聚類函數。如select name,sex from tb_students group by name這個sql

    語法在oracle中是錯誤的,因為sex 不在group by 分組后面;但在mysql中是支持的。

 


免責聲明!

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



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