你的位置:首页 > 数据库

[数据库]DISTINCT和GROUP BY的区别


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。