本帖最后由 myskya 于 2019-12-9 11:28 编辑 4 u4 |7 r' o) I0 i- U8 Q6 r
问题描述/ \( z1 J+ U1 O5 _" { Z
查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。 1 C2 \. d2 ~* I) u! }$ e
1.数据去重样例样例数据表 quancheng_test + h, L! P T# ?, d8 H
]# D8 |1 t" V3 ?+ u功能需求:按 name 进行去重,把 id 查出来。
! s4 S6 \# B1 i( I方案1: - select id from table group by name;
复制代码结果1: 6 q$ P& t% B1 O0 u- {2 w5 m
$ p1 X4 ]7 g% e: Q方案2: - select id, count(distinct name) from quancheng_test group by name;
复制代码结果2: * w. S6 _( @" ]+ E
0 u* h4 c9 Y! J/ [2.两种去重方案的区别group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:
/ h1 X. {7 V. |3 ~对 name 分组,并统计每组 id 的和, - select sum(id), name from quancheng_test group by name;
复制代码查询结果为:
% l) r. m3 b* `: O0 U* l8 x- ?
& |; T: r5 t4 R4 S, r5 Wdistinct 是查询出来以后再把重复的去掉
! Z n" w) G j; a5 C& G, T1 P性能上 group 比 distinct 要好很多 ( f( E' u0 {% I- W+ G7 j0 ^
2 S& D: |3 B6 n2 W6 w |