召隆企博汇论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2499|回复: 0

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

[复制链接]

24

主题

5

回帖

199

积分

公司现有员工

积分
199
发表于 2019-12-9 11:24:36 | 显示全部楼层 |阅读模式
本帖最后由 myskya 于 2019-12-9 11:28 编辑 1 w* J6 x, T$ F2 N: q
问题描述
- w$ u8 t) O$ w. P6 G查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。

( c. D9 v7 a/ z* `0 u1 t- j6 V1.数据去重样例

样例数据表 quancheng_test

3 h4 Z% T* |  o( Q. r( j! g  A

6 q! I0 M$ d8 y/ j- u% N( @' \- q

功能需求:按 name 进行去重,把 id 查出来。
5 [  s7 L/ `4 v; i: M0 Y方案1:

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

结果1:

7 \, w* Z9 m3 V
1 X6 ~4 |( U# z1 P- b, d

方案2:

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

结果2:

5 L8 ]8 [" S: z% H0 s2 K2 H

% e. X, c) j+ I6 x6 V2.两种去重方案的区别

group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:
1 h8 A- k) h  _4 `4 F对 name 分组,并统计每组 id 的和,

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

查询结果为:


3 d3 j- u5 _; S$ i' y5 Y3 b! v. n/ L5 w  d

distinct 是查询出来以后再把重复的去掉
. i& O( V5 y. ]( P性能上 group 比 distinct 要好很多

/ j' t0 t+ u; O, w+ U
2 N( ]  Q" J2 w% J6 F+ r) y, |9 ^

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-18 02:54 , Processed in 0.033301 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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