如何刪除數據庫中的重復數據


有兩個意義上的重復記錄,

一是完全重復的記錄,也即所有字段均重復的記錄,

二是部分關鍵字段重復的記錄,比如Name字段重復,而其他字段不一定重復或都重復可以忽略。

1、對於第一種重復,比較容易解決,使用

select distinct * from tableName

這樣就可以得到無重復記錄的結果集。

然后通過臨時表實現對數據的維護。

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

#Tmp為什么系統參數,tableName為要操作的表名。

2、第二類重復問題通常要求保留重復記錄中的第一條記錄,操作方法如下:

  假設有重復的字段為Name,Address,要求得到這兩個字段唯一的結果集

select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)

最后一個select即得到了Name,Address不重復的結果集(但多了一個autoID字段,實際寫時可以寫在select子句中省去此列)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM