sql删除某一字段的重复记录(500万条数据以上)


1.表结构即数据:表没有Id标识字段。现在我们要删除N1字段的重复记录的操作:看步骤2,3

2.在没有标识字段时我们要给表新增一个标识字段,(当然你在设计的时候可以加上Id标识字段,我这里是测试无标识字段的情况下)

---先给表新增id字段并赋值
ALTER TABLE dbo.Test ADD id INT  
GO 
DECLARE @id INT 
SET @id = 0 
UPDATE [Test] 
SET @id = rowid = @id + 1 

3.给表添加标识字段后就开始删除重复字段的记录

---再删除重复的字段
delete from [Caipiao].[dbo].[Test] 
where  Id
NOT IN (Select MIN(RowId)  From [Test] Group By N1 Having Count(*)>1  --取重复里的最小的RowId记录
UNION
Select MIN(RowId)  From [Test] Group By N1 Having Count(*)=1)--取非重复的RowId记录

该思路是:取除重复记录里最小的那个RowId(RowId是该表的标识字段)和非重复记录里的RowId的并集,然后我们删除非并集下的RowId记录,如此就删除掉了重复记录的值

具体参考:www.deriva.cn/technology

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM