group by与distinct有何区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了group by与distinct有何区别相关的知识,希望对你有一定的参考价值。

这两者本质上应该没有可比性,distinct 取出唯一列,group by 是分组,但有时候在优化的时候,在没有聚合函数的时候,他们查出来的结果也一样。

一、group by

英 [ɡru:p bai]   美 [ɡrup baɪ]  

[计][WIN]分组依据

拓展资料

1、This operator also serves as input to the Group By operator.

该操作符还充当Group By操作符的输入。

2、Complete the following steps to create and program the Group By operator. 

完成以下步骤,创建Group By操作符并对它进行配置。

3、With the appropriate access path, the ORDER BY or GROUP BY requirement can be met without sorting. 

使用恰当的访问路径,无需排序即可满足ORDER BY或GROUP BY需求。

4、Drag it to the right of the Group By operator. 

将它拖放到Group By操作符的右边。

二、distinct

英 [dɪˈstɪŋkt]   美 [dɪˈstɪŋkt]  

adj.明显的,清楚的;卓越的,不寻常的;有区别的;确切的

拓展资料

1、I have distinct memories of him in his last years. 

我清楚地记得他最后几年的情况。

2、Another Cup marathon between the two sides is now a distinct possibility. 

双方很可能再进行一场马拉松式的优胜杯比赛。

3、The photograph showed a distinct image. 

照片显出了明晰的影像。

4、I want a distinct answer to my question. 

我要求对我的问题作出明确的答复。

参考技术A 他们的功能基本上是不一样的。
distinct消除重复行。
group
by是分组语句。
举例来说可能方便一点。
A表id
numa
1b
2c
3a
4c
7d
3e
5
如果只选出id列,用distinct和group
by
一样的。
select
distinct(id)
from
A;idabcde;select
id
from
A
group
by
id;idabcde;不同之处可能在于group
by有排序功能。
但是如果需要加上另一列num,结果不同。
group
by
是分组语句,如果用
select
id,num
from
A
group
by
id,num;
这样的结果在本例中与不加group
by是一样的,因为num各个不同。
但是如果select
id,num
from
A
group
by
id;
注意该语句是错误语句,因为num没有使用聚组函数,例如:sum(求和),avg(求平均数)
select
id,sum(num)
from
A
group
by
id;
id
sum(num)a
5b
2c
10d
3e
5
用distinct不显示重复的行。
在本例中select
distinct
id,num
from
A;的结果也和不加distinct一致。
因为id,num没有重复的行,而不是只看id。
group
by
功能更强大一些,另外推荐使用group
by。
因为distinct会导致全表扫描,而group
by如果索引建的
恰当的话,会有性能上的提高。

distinct group by 的区别

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:计算列的最小值
————————————————

以上是关于group by与distinct有何区别的主要内容,如果未能解决你的问题,请参考以下文章

distinct和group by的区别

GROUP BY 和 DISTINCT 之间有啥区别吗

SQL中Distinct和group by性能区别

SQL中Distinct和group by性能区别

distinct group by 的区别

mysql中去重,distinct和group by的区别