本帖最后由 myskya 于 2019-12-9 11:28 编辑 4 e: ]0 t' [# j+ E+ i% Y7 ^
问题描述" }! V j7 A A: t" G
查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。
; X1 i4 R- J1 n& ^1.数据去重样例样例数据表 quancheng_test ! ?$ F) v) v# E0 y* z+ |
# ~2 g! p2 p5 U5 Z功能需求:按 name 进行去重,把 id 查出来。# b8 t' K0 ]: M" e9 i$ `# o
方案1: - select id from table group by name;
复制代码结果1: # H6 F% [) f3 M4 O3 b" R
/ Q) N1 t* Z0 _! U1 r1 p5 n* P方案2: - select id, count(distinct name) from quancheng_test group by name;
复制代码结果2: , W+ s# k( I; R! c: B
2 A }: S/ |# L2 I$ W5 i# J2.两种去重方案的区别group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:
4 F; V9 t9 S* b" m3 f/ a0 B对 name 分组,并统计每组 id 的和, - select sum(id), name from quancheng_test group by name;
复制代码查询结果为: ) A1 n3 r0 [4 ~$ D7 D
: x5 R: Y2 R2 W: A1 h4 ?- |; k
distinct 是查询出来以后再把重复的去掉/ N' B4 x ]9 D* ^+ k! t
性能上 group 比 distinct 要好很多 7 u) W% F5 l) o5 _9 G
3 V# @* i1 L, W( r- Y |