召隆企博汇论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2689|回复: 0

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

[复制链接]

24

主题

5

回帖

199

积分

公司现有员工

积分
199
发表于 2019-12-9 11:24:36 | 显示全部楼层 |阅读模式
本帖最后由 myskya 于 2019-12-9 11:28 编辑 * ]( G& d/ T6 T* x5 H
问题描述# G5 S" Y% w: Z; i7 i1 H
查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。

, U" L3 X+ H7 N. V, T2 `0 q3 [: R1.数据去重样例

样例数据表 quancheng_test

( d: H% S! n4 s, T& i) s
7 i1 e; X' a0 j

功能需求:按 name 进行去重,把 id 查出来。  A! ~3 v0 E8 R. K" D
方案1:

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

结果1:

! [0 p6 d7 A( P+ s) V# K7 a( m) F- q
+ |- k6 u  M9 W

方案2:

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

结果2:

8 y/ w' f6 B! x. E

# ~6 h3 M# k- X' d. R8 i6 e2.两种去重方案的区别

group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:
$ s2 S" f5 X% ~9 ~. C  f对 name 分组,并统计每组 id 的和,

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

查询结果为:

& I4 W0 X% F9 v  C5 \. {

) ?8 e* K1 D2 a5 g9 Z) t7 [

distinct 是查询出来以后再把重复的去掉* o4 R+ B: z) p5 t& T! o4 T2 G2 d0 b
性能上 group 比 distinct 要好很多


/ U& T3 X* t5 M& s$ q9 ^
7 @0 y; I$ K2 O

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-5 00:51 , Processed in 0.041269 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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