去重是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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一个完整的java程序示例_write javabean error fastjson

    一个完整的java程序示例_write javabean error fastjsonimportorg.springframework.web.util.WebUtils;//導入方法依賴的package包/類/***Initializelogback,includingsettingthewebapprootsystemproperty.**@paramservletContextthecurrentServletContext*@seeW…

    2022年9月18日
    0
  • 使用Activity动态加载Fragment实现主界面框架

    使用Activity动态加载Fragment实现主界面框架

    2021年9月30日
    56
  • linux安装gcc命令步骤(centos安装gcc命令)[通俗易懂]

    linux安装gcc命令步骤(centos安装gcc命令)[通俗易懂]linux安装gcc命令步骤(centos安装gcc命令)>一、前言本文介绍在CentOS7.8系统下使用YUM升级GCC版本的相关操作步骤。CentOS7默认安装的gcc版本是4.8版本,gcc4.8最主要的一个特性就是全面支持C++11,如果不清楚什么用的也没关系,简单说一些C++11标准的程序都需要gcc4.8以上版本的gcc编译器编译。很多工具依赖的是更高版本的gcc,比如编译MySQL8.0(8.0.16以上版本是C++14标准,需gcc5.3以上版本)、Redis6.

    2022年10月10日
    0
  • JavaScript中的document.cookie的使用

    JavaScript中的document.cookie的使用 我们已经知道,在document对象中有一个cookie属性。但是Cookie又是什么?“某些Web站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为Cookie。”——MSIE帮助。一般来说,Cookies是CGI或类似,比HTML高级的文件、程序等创建的,但是javascript也提供了对Cookies的很全面的访问权利。  我们先要学

    2022年7月27日
    4
  • hadoop 资源[通俗易懂]

    hadoop 资源[通俗易懂]1)Cygwin相关资料  (1)Cygwin上安装、启动ssh服务失败、sshlocalhost失败的解决方案  地址:http://blog.163.com/pwcrab/blog/static/16990382220107267443810/  (2)windows2003+cygwin+ssh  地址:http://wenku.baidu.com/view/3777b…

    2022年5月21日
    34
  • hive RegexSerDe View

    hive RegexSerDe View

    2022年1月14日
    35

发表回复

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

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