一句删除重复数据行

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

各论坛、各博客、各知名网站找个遍,竟然没有找到我想要的方法。(我这人比较懒,又喜欢简单的东西,所以一直想找一个一条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循环中,用子查询做为条件就行了。反正我这数据量不是很大,这就足够了。

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

你可能感兴趣的:(一句删除重复数据行)