召隆企博汇论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2627|回复: 0

mysql:distinct, group by 去重用法和区别

[复制链接]

24

主题

5

回帖

199

积分

公司现有员工

积分
199
发表于 2019-12-9 11:24:36 | 显示全部楼层 |阅读模式
本帖最后由 myskya 于 2019-12-9 11:28 编辑 " {& ]* `6 {1 m! {3 v  F
问题描述
% f# q" v  g, K2 P8 o. O  a查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。

3 C' c5 Z8 I5 \+ W! j& Z1.数据去重样例

样例数据表 quancheng_test


; S; w; F% @( L! P% c
. j. E( r2 [: Y7 P6 o

功能需求:按 name 进行去重,把 id 查出来。
/ H7 ~' S7 X5 w6 x方案1:

  1. select id from table group by name;
复制代码

结果1:

; u( z: S$ S1 E& ?
- f% e* o/ N8 H9 V/ Z1 J: b3 c* V

方案2:

  1. select id, count(distinct name) from quancheng_test group by name;
复制代码

结果2:

" c# ^% y8 E6 R9 H: S+ a! M

" V: l7 D4 a- ^1 l+ E* c6 ^) I2.两种去重方案的区别

group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:. O$ C6 t6 o7 L- R5 f
对 name 分组,并统计每组 id 的和,

  1. select sum(id), name from quancheng_test group by name;
复制代码

查询结果为:


& V; x* ?3 k1 v8 T! S( K
2 X2 B- ^) G9 `* @. P6 u

distinct 是查询出来以后再把重复的去掉' B9 k' z3 r3 ^- j, Z) K! @2 `9 |
性能上 group 比 distinct 要好很多


0 t; w3 B# N# ~  j: C( u
5 u( S- c4 x% i# u

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|召隆企博汇 ( 粤ICP备14061395号 )

GMT+8, 2026-5-17 23:47 , Processed in 0.034877 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表