DISTINCT和GROUP BY的區別
> DISTINCT是取出查詢結果中的重復項;而GROUP BY是按某項進行分組顯示。前者的目的就是要去除結果中相同的項,後者則主要用於對結果歸組,常和聚集函數等一起使用。
DISTINCT操作只需要找出所有不同的值就可以了。而GROUP BY操作還要為其他聚集函數進行准備工作。從這一點上將,GROUP BY操作做的工作應該比DISTINCT所做的工作要多一些。
除此之外,基本上看不到DISTINCT和GROUP BY(沒有聚集函數的情況)有什麼區別,而且從執行效率上也看不到明顯的差異;
和GROUP BY一起使用的函數有:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
> 例如:
SELECT studentId, SUM(score)
FROM studentScores
GROUP BY studentId
如上句子可以用於計算每個學生所有科目的成績之和。
> 因此,兩者面向的應用其實不同,如果單單為了去除重復項,推薦使用DISTINCT。