select distinct(university) from user_profile;
select university from user_profile group by university;二者返回的结果式样的。但是既然一样,为什么又要做两个函数呢?来看看它们的区别
————————————————

distinct 支持单列、多列的去重
单列去重的方式简明易懂,即相同值只保留1个;多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。

distinct只是将重复的行从结果中剔除出去;

group by 也支持单列、多列的去重,但是按指定的列分组,一般这时在select中会用到聚合函数。

distinct是把不同的记录显示出来。
group by是先把纪录按照类别分出来再查询。
group by 必须在查询结果中包含一个聚集函数,而distinct不用。

所以,

仅仅从查询的作用角度看:

distinct 和 group by 都可以用来去重

不同之处,distinct 是针对要查询的全部字段去重,而 group by 可以针对要查询的全部字段中的部分字段去重,它的作用主要是:获取数据表中以分组字段为依据的其他统计数据。

从性能角度看:

两者执行方式不同,distinct主要是对数据两两进行比较,需要遍历整个表。group by分组类似先建立索引再查索引,当数据量较大时,group by速度要优于distinct。

————————————————
拓展:聚合函数
SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数。 聚合函数经常与 SELECT 语句的 GROUP BY 子句的HAVING一同使用
SQL中提供的聚合函数可以用来统计、求和、求最值等等。
分类:
–COUNT:统计行数量
–SUM:获取单个列的合计值
–AVG:计算某个列的平均值
–MAX:计算列的最大值
–MIN:计算列的最小值
————————————————