问题描述
查询数据经常需要对数据表的某一属性进行去重操作,group by 和 distinct 都有去重功能,但是有区别。
1.数据去重样例
样例数据表 quancheng_test
id | name |
---|---|
1 | a |
2 | b |
3 | c |
4 | d |
5 | a |
6 | b |
功能需求:按 name 进行去重,把 id 查出来。
方案1:
select id from quancheng_test group by name;
结果1:
id |
---|
1 |
2 |
3 |
4 |
方案2:
select id, count(distinct name) from quancheng_test group by name;
结果2:
id | count(distinct name) |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 1 |
2.两种去重方案的区别
group 是按组查询的,是一种聚合查询,很多时候是为了做统计用,例如:
对 name 分组,并统计每组 id 的和,
select sum(id), name from quancheng_test group by name;
查询结果为:
sum(id) | name |
---|---|
6 | a |
8 | b |
3 | c |
4 | d |
distinct 是查询出来以后再把重复的去掉
性能上 group 比 distinct 要好很多
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16620.html