本帖最后由 myskya 于 2019-12-9 11:28 编辑
+ w8 ~! {! I: N' U问题描述 u) w# V6 `/ F0 y
查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。 . ~! \/ Q g* m+ }! }3 C, g
1.数据去重样例样例数据表 quancheng_test
8 w/ ]/ h2 z' o8 _& Q' X4 Y9 o6 W
功能需求:按 name 进行去重,把 id 查出来。/ W1 }4 Y( B' i$ c$ ?# k
方案1: - select id from table group by name;
复制代码结果1:
9 } J' [2 {' ?" F- k) s
7 @5 g( `- z# `7 B/ S4 m* `' A) @方案2: - select id, count(distinct name) from quancheng_test group by name;
复制代码结果2: & m! y7 h; ?2 ?- \) n/ ^# s, z
: |0 v+ r" d( J, A. R0 P7 c- I2.两种去重方案的区别group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:# V+ m5 }; Z C
对 name 分组,并统计每组 id 的和, - select sum(id), name from quancheng_test group by name;
复制代码查询结果为: . E1 N' O/ Y$ y* i m
- i. i: I% X3 J& A
distinct 是查询出来以后再把重复的去掉9 N( Y# v* W( D7 M3 J4 A3 Q" J+ P1 r
性能上 group 比 distinct 要好很多
' I; o# m* A: y# Z T1 y+ y3 x# j @. b" A' M7 Z
|