程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL如何去除數據表中重復的數據

SQL如何去除數據表中重復的數據

編輯:關於SqlServer
 

我們可以用關鍵字Distinct去掉結果集中重復的元素,但是這樣並不能刪除數據庫中重復的元素。
如果想把數據表某個字段重復的數據刪除,利用臨時表作為中轉站是個好方法。
設想我們想把數據表Tb_Blogs中字段BlogUrl有重復值的數據多余的行刪掉(有相同的BlogUrl的數據只保留一行),那麼我們可以這樣做:

select * into #temp1 from Tb_Blogs where ID in (select Max(ID) from Tb_Blogs group by BlogUrl)

這個語句把沒有重復的數據全部保存到臨時表#temp1中(注意我這個表中有主鍵ID,如果沒有主鍵的行那就應該在臨時表中建立主鍵,然後在臨時表中再進行去重復行,再建立另外一個臨時表來保存沒有重復行的數據),然後

drop table tb_blogs

刪除表tb_blogs

select * into tb_blogs from #temp1

把臨時表沒有重復行的數據全部倒回到tb_blogs中
drop table #temp1
刪除臨時表


當我以為上面的是個好方法時,蜘蛛卻讓我感到自己瞎折騰了,原來還有更好的方法:

Delete from Tb_Blogs where [ID] Not In (Select Max([ID]) from Tb_Blogs Group by [BlogUrl])

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved