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