mysql 字段排重_SQL 数据排重,去掉重复数据 有用

.最大的错误:

在对数据排重的时候,首先想到的就是Distinct,虽然这很管用,但多数场合下不适用,因为通常排重后还要做进一步处理,比如对编号排重后要按日期统计等。

无法排重的Group by ... having ...

虽然可以用Group by userid having count(*) =1 或者>1 ,但只能找出重复或者不重复的记录,好像达不到distinct 的效果(我是没做到,啊笨)。

这个可以:

用select * from table t where not exists (select 1 from table where userid=t.userid and submit_time > submit_time) (submit_time为记录入库时间,或者可以用其他的只要是数据库中不重复的字段就成),同时还达到了一个效果,第一次入库的userid才被计算在内,这在许多情况下还是比较有用的(比如处理误操作什么的)。

值得注意:

另外在用上面的方法排重的时候,如果外面的select * .... where ...  后还有其他条件,则这些条件也要写入 select 1 from .... where .... 中,即内、外条件要相同(我就是没注意到这点,发现结果比Distinct 上下差几条,郁闷了好久:( )

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值