SQL如何刪除所有字段都相同的重復數據?


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

 


免責聲明!

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



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