Mysql的统计重复记录

虽说SQL语法,这些主流的数据库引擎都支持,但是每一个数据库引擎都有自己的特性,例如统计并显示非重复的数据。

mysql的实现形式是:

数据库test
  id name
  1 agle
  2 blibli
  3 cat
  4 cat
  5 blibli

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from test
得到的结果是:

  name
  agle
  blibli
  cat

如果我们需要多个字段呢?该怎么办?我们继续往下看

select distinctuid, name from test

结果会是:

  uid name
  1    agle
  2    blibli
  3    cat
  4    cat
  5    blibli

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除

解决方法: select uid, name from tablegroup by name

如果在加上count这个统计聚合函数呢?为了统计agle,blibli,cat出现的次数呢?

情况仍然是这样, 你会发现如果你采用如下的sql语句执行得到的结果也不是你想要的~

select distinct uid, name, count(*) from test

结果会是:

uid name count(*)

1    agle   5

显然不是我们需要的,mysql需要使用group by 来完成这些

select distinct uid, name, count(*) from test group by name

结果是:

uid name count(*)

1    agle     1

2    blibli     2

3    cat       2

那如果我们想要显示多个字段的时候,怎么办呢?

可以在 group by 后面接上多个字段,如 group by name, uid

其实此时,distinct有没有结果都是一样的,感觉mysql中去重统计一般都是mysql使用group by 关键字,distinct并没有启动作用,如理解有误

望指正~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值