MySQL去重中 distinct 和 group by 的区别

您所在的位置:网站首页 sql去重效率最高 MySQL去重中 distinct 和 group by 的区别

MySQL去重中 distinct 和 group by 的区别

#MySQL去重中 distinct 和 group by 的区别| 来源: 网络整理| 查看: 265

开题:SQL中的 group by 和 distinct 了解吗,简单介绍一下?

group by 是按照指定的规则对数据进行分组,所谓的分组就是将一个数据划分成若干个组,然后针对若干个组进行数据处理。distinct 是一个关键字,常用于select之后,用于取出去重之后的值。

所以,group by 和 distinct 都可以用于去重。那有什么区别呢?

 

测试数据:

CREATE TABLE student ( stu_no VARCHAR(40) NOT NULL, name VARCHAR(100) NOT NULL ); insert into student values('1001','name1'); insert into student values('1002','name2'); insert into student values('1003','name1'); insert into student values('1004','name2'); insert into student values('1001','name1');

1.仅对name字段去重

select distinct name from student

2.对stu_no,name两个字段去重

select distinct stu_no,name from student

对比图1,2发现,只有两个字段完全一样的数据被去掉,其他只有一个字段重复的数据并没有变化,因此得出结论:

distinct主要是针对全部字段去重,即去掉完全一样的数据。

3.要想每个字段只保留同一个值,即针对单字段去重,可以采用group by聚合去重,

select stu_no,name from student group by name

总结:

distinct和group by都可以用来去重,不同之处,distinct针对全部字段去重,而group by可以针对全部字段中的单一字段去重。两者执行方式不同,distinct主要是对数据两两进行比较,需要遍历整个表。group by分组类似先建立索引再查索引,当数据量较大时,group by速度要优于distinct。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3