SQL Server數據庫:有時候在處理數據時會遇到不加主鍵的表,導致數據表內出現了一模一樣的數據,剛開始第一時間想到的方式是,把兩條數據全部刪除,然后再插入一條,但是這種可能數據量比較少的話,還可以,沒有那么麻煩,一旦出現大量的數據需要處理,就有點浪費時間了,后來又想到了下面這種方式,個人覺得還不錯,今天就簡單介紹下這個如何在數據表內刪除所有字段都相同的重復數據。
首先創建一個臨時表並插入一些數據,用於模擬該場景。
--創建一個#temp的臨時表 create table #temp ( ID int not null, Name varchar(20) null ) --在臨時表內插入測試數據 insert into #temp(ID,Name) values('1','測試'); insert into #temp(ID,Name) values('1','測試'); insert into #temp(ID,Name) values('2','測試2'); insert into #temp(ID,Name) values('2','測試'); insert into #temp(ID,Name) values('3','測試');
測試表結果查詢
select * from #temp
ID | Name |
1 | 測試 |
1 | 測試 |
2 | 測試2 |
2 | 測試 |
3 | 測試 |
去重並刪除重復數據SQL語句:
--查詢去重並刪除重復數據 with TEST as ( select ID,Name,row_number() over(partition by ID,Name order by ID) RowNum from #temp ) delete from TEST where RowNum > 1 --查詢去重后的數據 select * from #temp
ID | Name |
1 | 測試 |
2 | 測試2 |
2 | 測試 |
3 | 測試 |
測試到此結束,記得最后再把測試用的臨時表刪除!!!
DROP TABLE #temp