一句删除重复数据行

最近有个项目需要从网上抓数据,有重复数据在所难免,就想把重复数据删掉,只留一条有用的。

各论坛、各博客、各知名网站找个遍,竟然没有找到我想要的方法。(我这人比较懒,又喜欢简单的东西,所以一直想找一个一条SQL语句就能搞定的方法。)

没办法,只能自己搞了。就又去w3cschool重新深造了。(w3cschool可是个好地方!别笑我,理论的东西和能在字典中查到的东西,我从来不刻意去学。)

要么说懒人有懒法呢,真让我搞出来了。自己看吧。

DELETE FROM tablename WHERE id IN( SELECT MAX(id) FROM tablename GROUP BY fieldname HAVING COUNT(0)>1 )

我解释一下:

首先这里的id视为主键。

子查询是把数据分了个组GROUP BY,过虑了一下只要有重复的数据COUNT(0)>1。

返回的结果是个集合,是每组中最大的一个主键MAX(id)。

主句就是一个删除语句,没什么特别,条件是IN型过虑。

没错,高手们已经看出来了。这只能删除重复数据中的一条数据。

前面说了,我这个人懒,勤快的人可以把他放到T-SQL循环中,用子查询做为条件就行了。反正我这数据量不是很大,这就足够了。

注意,重要的不是原创,是分享。网上的用临时表、用标记等等都弱爆了,但不鄙视,共同学习,共同学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值