Mysql 去重 聚合

示例数据表中的数据:
mysql> select * from talk_test;
+----+-------+--------+
| id | name  | mobile |
+----+-------+--------+
|  1 | xiao9 | 555555 |
|  2 | xiao6 | 666666 |
|  3 | xiao9 | 888888 |
|  4 | xiao9 | 555555 |
|  5 | xiao6 | 777777 |
+----+-------+--------+

进行单列去重后的结果:
mysql> select distinct(name) from talk_test;
+-------+
| name  |
+-------+
| xiao9 |
| xiao6 |
+-------+
2 rows in set (0.01 sec)

mysql> select distinct(mobile) from talk_test;
+--------+
| mobile |
+--------+
| 555555 |
| 666666 |
| 888888 |
| 777777 |
+--------+
**只会保留指定的列的信息

进行多列去重后的结果:
mysql> select distinct name,mobile from talk_test;
+-------+--------+
| name  | mobile |
+-------+--------+
| xiao9 | 555555 |
| xiao6 | 666666 |
| xiao9 | 888888 |
| xiao6 | 777777 |
+-------+--------+
**只有所有指定的列信息都相同,才会被认定为重复的信息
 

 

distinct和Group by 区别: 

        distinct只是将重复的行从结果中出去; 

        group by是按指定的列分组,一般这时在select中会用到聚合函数。

        distinct是把不同的记录显示出来。

        group by是在查询时先把纪录按照类别分出来再查询。 

        group by 必须在查询结果中包含一个聚集函数,而distinct不用。 

聚合函数 :

        AVG

        MAX

        MIN

        SUM 

        COUNT 

假定 Table 表有三列, id, key,value 其中 id是主键,不能重复,key和value可能有重复记录  

使用distinct去重复: 

         select distinct key,value from table 不能显示主键。  

使用group by 去重复 :

        select id,key,value from table A, (select key,value, min(id) PID from table group by key,value ) B where A.id=B.PID 

        可以显示主键
 

转载于:https://my.oschina.net/robslove/blog/3016104

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值