去重是distinct还是group by?

去重是distinct还是group by?

distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但应该仔细区分,因为用错场景的话,效率相差可以倍计。

单纯的去重操作使用distinct,速度是快于group by的。

distinct

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

干巴巴的说不好理解,示例一下:

示例数据表中的数据:
mysql> select * from talk_test;
+----+-------+--------+
| id | name  | mobile |
+----+-------+--------+
|  1 | xiao9 | 555555 |
|  2 | xiao6 | 666666 |
|  3 | xiao9 | 888888 |
|  4 | xiao9 | 555555 |
|  5 | xiao6 | 777777 |
+----+-------+--------+

进行单列去重后的结果:
mysql> select distinct(name) from talk_test;
+-------+
| name  |
+-------+
| xiao9 |
| xiao6 |
+-------+
2 rows in set (0.01 sec)

mysql> select distinct(mobile) from talk_test;
+--------+
| mobile |
+--------+
| 555555 |
| 666666 |
| 888888 |
| 777777 |
+--------+
**只会保留指定的列的信息

进行多列去重后的结果:
mysql> select distinct name,mobile from talk_test;
+-------+--------+
| name  | mobile |
+-------+--------+
| xiao9 | 555555 |
| xiao6 | 666666 |
| xiao9 | 888888 |
| xiao6 | 777777 |
+-------+--------+
**只有所有指定的列信息都相同,才会被认定为重复的信息

 

group by使用的频率相对较高,但正如其功能一样,它的目的是用来进行聚合统计的,虽然也可能实现去重的功能,但这并不是它的长项。

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/ljl890705/article/details/70602442
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113442.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 因果图分析法[通俗易懂]

    因果图分析法[通俗易懂]目录一、因果图法1.理解二、因果图需要掌握的基本知识1.关系2.约束3.输出条件的约束4.输出条件的约束5.原因和结果表示6.中间节点三、因果图设计测试用例的步骤四、优缺点1.优点2.缺点五、实例1.案例2.分析案例六、为什么要有中间节点1.无中间节点因果图2.有中间节点因果图一、因果图法1.理解因果图是一种简化了的逻辑图,能直观的表明程序输入条件(原因)和输出动作(结果)之间的相互关系; 因果图法是借助图形来设计测试

    2022年8月14日
    5
  • Android Studio 教程:入门开发第一个程序「建议收藏」

    Android Studio 教程:入门开发第一个程序「建议收藏」AndroidStudio教程:入门开发第一个程序2018.09.1114:3016005浏览开发第一应用可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击StartanewAndroidStudioProject创建工程:接下来需要输入应用名称(第一个字母要大写)、公司域以及指定应用存放目录,点击Next按钮进入下一步:如果第一个字母…

    2022年6月1日
    38
  • FGC 2012

    FGC 2012JournalSpecialIssuesDistinguishedselectedpapersacceptedandpresentedinFGC2012,afterfurtherextensionandrevisions,willbepublishedinspecialissuesofthefollowingprestigiousSCI-Inde

    2022年6月19日
    32
  • libtorch-resnet18

    libtorch-resnet18与大家分享一下自己在学习使用libtorch搭建神经网络时学到的一些心得和例子,记录下来供大家参考首先我们要参考着pytorch版的resnet来搭建,这样我们可以省去不必要的麻烦,上代码:1、首先是pytorch版残差模块classResidualBlock(nn.Module):def__init__(self,inchannel,outchannel,stride=1,shortcut=None):super(ResidualBlock,self).__

    2022年5月23日
    32
  • eclipse导入maven工程,右键没有build path和工程不能自动编译解决方法

    eclipse导入maven工程,右键没有build path和工程不能自动编译解决方法原文链接:https://blog.csdn.net/wusunshine/article/details/52506389eclipse导入maven工程,右键没有buildpath解决方法:由于.project文件缺少<natures><nature>org.eclipse.jdt.core.javanature</nature&gt…

    2022年5月31日
    47
  • 简述你是如何理解Java语言中的变量和常量的?_java什么是变量和常量

    简述你是如何理解Java语言中的变量和常量的?_java什么是变量和常量Java基础语法之Java常量与变量

    2022年4月21日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号