首页
学习
活动
专区
圈层
工具
发布

MySQL中distinct和group by去重的区别

MySQL中distinct和group by去重的区别 在MySQL中,我们经常需要对查询结果进行去重,而DISTINCT和GROUP BY是实现这一功能的两种常见方法。...; 聚合函数+去重 使用DISTINCT+聚合函数计算aid去重之后的总条数: SQL代码: SELECT COUNT(DISTINCT aid) FROM pageview; GROUP BY使用 GROUP...: SELECT aid FROM pageview GROUP BY aid; 与DISTINCT相比,GROUP BY可以显示更多的列,而DISTINCT只能展示去重的列。...多列去重 根据aid和uid联合去重: SQL代码: SELECT aid, uid FROM pageview GROUP BY aid, uid; 聚合函数 + GROUP BY 统计每个aid的总数量...: SQL代码: SELECT aid, COUNT(*) FROM pageview GROUP BY aid; distinct和group by的区别 查询结果集不同 使用DISTINCT去重时,

85400
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL去重:DISTINCT vs GROUP BY,谁才是效率之王?

    面对这种需求,很多开发者习惯随手用 DISTINCT,也有人觉得 GROUP BY 更 “万能”,但很少有人深究:这两者底层原理有何不同?在不同场景下谁的效率更高?...他说看到网上有人说禁止使用distinct,但是他实际测的时候发现其实distinct有的情况下效率比group by又要好,所以更加不确定该怎么用了。...二、 DISTINCT与GROUP BY的本质差异 DISTINCT是SQL专门为去重设计的关键字,它的核心使命很简单——去除重复行,返回唯一值。...当去重列有索引时,DISTINCT和GROUP BY都可以利用索引进行高效扫描,性能差异微乎其微。两者甚至可能使用相同的执行计划。...逻辑更简洁,无索引时效率略高 去重 + 聚合(COUNT/SUM/AVG 等) GROUP BY 唯一能实现聚合的方式 去重 + 过滤分组结果 GROUP BY + HAVING DISTINCT 无分组过滤能力

    80520

    面试官:GROUP BY和DISTINCT有什么区别?

    在 MySQL 中,GROUP BY 和 DISTINCT 都是用来处理查询结果中的重复数据,并且在官方的描述文档中也可以看出:在大多数情况下 DISTINCT 是特殊的 GROUP BY,如下图所示:...2.GROUP BY 介绍 用途:GROUP BY 主要用于对结果集按照一个或多个列进行分组,通常与聚合函数(如 COUNT, SUM, AVG, MAX, MIN 等)一起使用,以便对每个组进行统计。...2 Bob 1 4.主要区别 功能不同:DISTINCT 用于去除重复行,而 GROUP BY 用于对结果集进行分组,通常与聚合函数一起使用。...返回结果不同:DISTINCT 返回去重后的结果集,查询结果集中只能包含去重的列信息,有其他列信息会报错;GROUP BY 返回按指定列分组后的结果集,可以展示多列信息,并可以包含聚合函数的计算结果。...性能略有不同:如果去重的字段有索引,那么 GROUP BY 和 DISTINCT 都可以使用索引,此情况它们的性能是相同的;而当去重的字段没有索引时,DISTINCT 的性能就会高于 GROUP BY,

    1.2K20

    面试官:GROUP BY和DISTINCT有什么区别?

    在 MySQL 中,GROUP BY 和 DISTINCT 都是用来处理查询结果中的重复数据,并且在官方的描述文档中也可以看出:在大多数情况下 DISTINCT 是特殊的 GROUP BY,如下图所示:...2.GROUP BY 介绍用途:GROUP BY 主要用于对结果集按照一个或多个列进行分组,通常与聚合函数(如 COUNT, SUM, AVG, MAX, MIN 等)一起使用,以便对每个组进行统计。...用于去除重复行,而 GROUP BY 用于对结果集进行分组,通常与聚合函数一起使用。...返回结果不同:DISTINCT 返回去重后的结果集,查询结果集中只能包含去重的列信息,有其他列信息会报错;GROUP BY 返回按指定列分组后的结果集,可以展示多列信息,并可以包含聚合函数的计算结果。...性能略有不同:如果去重的字段有索引,那么 GROUP BY 和 DISTINCT 都可以使用索引,此情况它们的性能是相同的;而当去重的字段没有索引时,DISTINCT 的性能就会高于 GROUP BY,

    1.1K10

    SQL去重是用DISTINCT好,还是GROUP BY好?

    我们知道DISTINCT可以去掉重复数据,GROUP BY在分组后也会去掉重复数据,那这两个关键字在去掉重复数据时的效率,究竟谁会更高一点?...B.当SalesOrderDetailID取消掉自增长属性后就和普通列一样了。...2.GROUP BY与DISTINCT去掉重复数据的对比 GROUP BY与DISTINCT类似,经常会有一些针对这两个哪个效率高的争议,今天我们就将这两个在不同重复数据量的效率作下对比。...可以看出两条语句对应的执行时间GROUP BY比DISTINCT效率高一点点。...作者对上述语句同时执行多次,针对重复量多的UnitPrice,GROUP BY总的处理效率比DISTINCT高一点点,但是针对重复量低的SalesOrderDetailID,DISTINCT就比GROUP

    4.4K20

    MySQL中的数据去重,该用DISTINCT还是GROUP BY?

    GROUP BY GROUP BY 是一个用于分组的子句,通常与聚合函数配合使用以对分组后的数据进行汇总处理。它按指定列的值将行划分为不同的组。...New York 2 SQL 查询通过 GROUP BY 以城市分组,并结合 COUNT 聚合函数统计每组的订单数量,提供了更丰富的汇总信息。...SELECT DISTINCT 与 GROUP BY 的性能分析 虽然 DISTINCT 和 GROUP BY 都会涉及底层的分组操作,但在某些情况下,它们可以互换使用,而在性能、功能上的表现会有所偏差...在无显式排序要求时,DISTINCT 的性能会优于 GROUP BY。...SELECT DISTINCT 与 GROUP BY 的应用场景及差异 功能和目的对比: 功能 SELECT DISTINCT GROUP BY 目的 去重 分组并聚合数据 是否支持聚合函数 否 是 排序行为

    70100

    hive的group by与distinct的区别及性能测试比较

    先说结论:能使用group by代替distinc就不要使用distinct,例子: 实际论证 order_snap为订单的快照表 总记录条数763191489,即将近8亿条记录,总大小:108.877GB...,存储的是公司所有的订单信息,表的字段大概有20个,其中订单号是没有重复的,所以在统计总共有多少订单号的时候去重不去重结果都一样,我们来看看: 统计所有的订单有多少条条数,一个count函数就可以搞定的...hours 11 minutes 55 seconds 670 msec OK _c0 763191489 Time taken: 1818.864 seconds, Fetched: 1 row(s) GROUP...BY select count(t.order_no) from (select order_no from order_snap group by order_no) t; Stage-Stage-...-1: Map: 396 Reduce: 1 Cumulative CPU: 7915.67 sec HDFS Read: 119072894175 HDFS Write: 10 SUCCESS # group

    2.3K20

    group by 和聚合函数

    group by做为分组来使用,后面为条件,可以有多个条件,条件相同的为一组,配合聚合函数进行相关统计。...结论:  group by语句中select指定的字段必须是“分组依据字段”。 因此,只能这样查询: SELECT name FROM person GROUP BY name; 结果一致: ?...4.添加聚合函数 聚合函数有如下几种: 函数 作用 支持性 sum(列名) 求和 max(列名) 最大值 min(列名) 最小值 avg(列名) 平均值 first(列名) 第一条记录 仅Access...支持 last(列名) 最后一条记录 仅Access支持 count(列名) 统计记录数 注意和count(*)的区别  首先,要明白聚合函数的用法。...having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

    3.3K110

    面试官:MySQL 中的 distinct 和 group by 哪个效率更高?

    先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。...接下来,我们先来看一下distinct和group by的基础使用。...DISTINCT和GROUP BY都是可以使用索引进行扫描搜索的。...因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。 在语义相同,无索引的情况下: distinct效率高于group by。...且由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算

    2.3K10

    MySQL中的GROUP BY和DISTINCT:去重的效果与用法解析

    一、GROUP BY的用法及效果GROUP BY关键字用于将结果集按照一个或多个列进行分组,并对每个组应用聚合函数。...将学生按照城市进行分组,并使用COUNT(*)函数计算每个城市的学生人数。...GROUP BY的效果是将结果集中的行按照指定的列进行分组,并对每个组应用聚合函数。它不会去除重复的行,而是将重复的行分组,并对每个组应用聚合函数。...因此,如果我们在上述示例中的查询中不使用COUNT(*)函数,而是使用其他聚合函数如SUM()、AVG()等,将会得到不同的结果。...三、GROUP BY和DISTINCT对同一字段的去重效果比较尽管GROUP BY和DISTINCT都可以用于去重,但它们的用法和效果是不同的。

    11.3K50

    京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?太刁钻了吧!

    先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。...接下来,我们先来看一下distinct和group by的基础使用。...DISTINCT和GROUP BY都是可以使用索引进行扫描搜索的。...因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。 在语义相同,无索引的情况下: distinct效率高于group by。...且由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算

    2.6K30

    group_by()和split()函数的运用

    group_by()和split()函数的运用考虑下面一种情形,要根据 "drug" 列中的相同值提取出对应的 "molecules",并将 "molecules" 对应的值按每个 "drug" 分组,...可以使用 dplyr包中的 group_by()和 summarize()函数,或者直接使用 split()函数来达到目的方法一:library(dplyr)# 使用 group_by() 和 summarize...() 创建每个 drug 对应的 molecules 列表result % group_by(drug) %>% summarize(molecules_list = list...用着两种方法也能实现方法一:# 使用 group_by() 和 group_split() 创建每个 drug 对应的数据框result_list % group_by(drug...) %>% group_split()# 为每个数据框命名,使用 drug 列中的药物名称names(result_list) <- unique(network$drug)# 查看第一个药物对应的数据框

    65400

    【MySql】聚合函数&&group by&&OJ题目

    本篇主要介绍mysql的聚合函数和group by的使用,最后是OJ题目的练习。...聚合函数 MySQL中的聚合函数用于对数据进行计算和统计,常见的聚合函数包括下面列举出来的聚合函数: 函数 说明 COUNT([DISTINCT] expr) 返回查询到的数据的数量...SUM([DISTINCT] expr) 返回查询到的数据的总和,不是数字没有意义 AVG([DISTINCT] expr) 返回查询到的数据的平均值,不是数字没有意义 MAX([DISTINCT...] expr) 返回查询到的数据的最大值,不是数字没有意义 MIN([DISTINCT] expr) 返回查询到的数据的最小值,不是数字没有意义 对于上面所列举出来的聚合函数,下面我们通过一些案例来进行对聚合函数的运用...distinct select distinct count(distinct math) from exam_result; 统计数学成绩总分 select sum(math) from exam_result

    97510
    领券