源:https://blog.csdn.net/ljl890705/article/details/70602442
评:
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使用的频率相对较高,但正如其功能一样,它的目的是用来进行聚合统计的,虽然也可能实现去重的功能,但这并不是它的长项。
分享到:
相关推荐
主要介绍了MySQL去重该使用distinct还是group by,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但应该仔细区分。 单纯的去重操作使用distinct,速度是快于group by的。 distinct支持单列、多列的...
laravel框架中写统计用户的领取数量,打算用 groupBy + count来实现(去重+统计),加了groupBy之后再count,统计出来不的数量不对。查询资料+反复测试终于得到了解决方案。 错误的查询语句 :cross_mark: Model::...
主要介绍了MySQL中Distinct和Group By语句的基本使用教程,这里主要是针对查询结果去重的用法,需要的朋友可以参考下
补充知识:Distinct和Group by去除重复字段记录 重复记录 有两个意义,一是完全重复的记录,也即所有字段均重复的记录 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 1、...
mysql去重查询的三种方法:文章通过本人的真实测试,以图文并茂的方式实现了mysql数据库...包含mysql常用的使用distinct剔重、使用group by提重、使用开窗函数row_number()或类row_number()方法。详细内容请查看文档。
DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是...
单表的唯一查询用:distinct多表的唯一查询用:group bydistinct 查询多表时,left join 还有效,全连接无效,在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余...
GROUP BY HAVING ALIAS 表格链接 外部链接 CONCATENATE SUBSTRING TRIM CREATE TABLE CONSTRAINT NOT NULL UNIQUE CHECK 主键 外来键 CREATE VIEW CREATE INDEX ALTER TABLE DROP TABLE ...
在 MySQL 查询中,可能会包含重复值。...SELECT *, COUNT(DISTINCT nowamagic) FROM table GROUP BY nowamagic 这个用法,MySQL的版本不能太低。 在编写查询之前,我们甚至应该对过滤条件进行排序,真正高效的条
1、distinct和from之间所有的字段全部相同才会去重 2、select count(distinct name) from sanguo; 2、索引(BTREE) 1、优点 :加快数据检索速度 2、缺点 1、占用物理存储空间 2、需动态维护,占用系统资源 3、...
背景:有一个list,里面的每一个元素都是dict,根据某...from itertools import groupby from operator import itemgetter import pandas as pd def distinct(items): questions = map(itemgetter('question'), items)
movie_id IN ( SELECT movie_id FROM ( SELECT movie_id FROM b_movie GROUP BY movie_id HAVING count( movie_id )> 1 ) AS tmp1 ) AND mid NOT IN ( SELECT mid FROM ( SELECT min( mid ) mid FRO
熟练掌握 openGauss 单表查询的语法结构及其使用方法 ... 掌握使用 DISTINCT 实现查询结果的去重方法 掌握空值 NULL 的使用方法 掌握表别名的使用场合及方法 掌握自身连接的使用方法
几个删除重复记录的SQL语句 1.用rowid方法 2.用group by方法 3.用distinct方法 1。用rowid方法
9.3.4 Group By;9.3.5 Count(Distinct) 去重统计;9.3.6 笛卡尔积;9.3.7 行列过滤;9.3.8 动态分区调整;9.3.9 分桶;9.3.10 分区);9.4 数据倾斜(9.4.1 合理设置Map数;9.4.2 小文件进行合并;9.4.3 复杂文件...
③为经常需要排序、分组和联合操作的字段建立索引:order by、group by、union(联合)、distinct(去重)等。 ④限制索引个数:索引数量多,需要的磁盘空间就越多,更新表时,对索引的重构和更新就很费劲。 ⑤表数据少...
分析:通过用户表可以完成查询,每年可能包含多个会员,如果把此表中的创建年份都列出来会有重复,因此使用DISTINCT去重。 【实验2.4】ORDER BY (1)查询类别ID为1的所有商品,结果按照商品ID降序排列。 分析:从...