sql刪除某一字段的重複記錄(500萬條數據以上)

1.表結構即數據:表沒有Id標識字段。如今咱們要刪除N1字段的重複記錄的操做:看步驟2,3測試

2.在沒有標識字段時咱們要給表新增一個標識字段,(固然你在設計的時候能夠加上Id標識字段,我這裏是測試無標識字段的狀況下)spa

---先給表新增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記錄,如此就刪除掉了重複記錄的值code

具體參考:www.deriva.cn/technologyblog

相關文章
相關標籤/搜索