关于mysql筛去重复数据的问题

distinct可以做到筛去重复数据的作用,但它只能写在最前面,即select * distinct a,b,c from table;的形式,

如果为select * a,distinct b,c from table;就会报错,

并且如果有多个字段的话只会去除a,b,c都相同的字段,很不方便。

 

于是发现group by也能起到筛选的作用,并且可以随意指定字段,没有distinct的限制。

但group by的策略是选择最早出现的数据作为留下的数据,即便使用order by也没用,因为它的优先级是比order by排序的优先级高的。

这就会导致一些问题,比如某人当天数据有很多,想要通过group by 保留下那天的最新数据,但直接使用只会保留那天最早的数据。

解决方法:

select* from(select a,b,c from table order by c desc) t1 group by t1.a,t1.b;

也就是先排序,再筛选。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值