數據庫中刪除重復記錄一直是件挺煩人的事,本人收集了Oracle跟SqlServer的快速刪除重復記錄的方法,供大家參考,希望對大家有所幫助。SQL SERVER
想必每一位SQL SERVER開(kāi)發(fā)人員都有過(guò)類(lèi)似的經(jīng)歷,在對數據庫進(jìn)行查詢(xún)或統計的時(shí)候不時(shí)地會(huì )碰到由于表中存在重復的記錄而導致查詢(xún)和統計結果不準確。解決該問(wèn)題的辦法就是將這些重復的記錄刪除,只保留其中的一條。
在SQL Server中除了對擁有十幾條記錄的表進(jìn)行人工刪除外,實(shí)現刪除重復記錄一般都是寫(xiě)一段代碼,用游標的方法一行一行檢查,刪除重復的記錄。因為這種方法需要對整個(gè)表進(jìn)行遍歷,所以對于表中的記錄數不是很大的時(shí)候還是可行的,如果一張表的數據達到上百萬(wàn)條,用游標的方法來(lái)刪除簡(jiǎn)直是個(gè)噩夢(mèng),因為它會(huì )執行相當長(cháng)的一段時(shí)間。
四板斧——輕松消除重復記錄
殊不知在SQL Server中有一種更為簡(jiǎn)單的方法,它不需要用游標,只要寫(xiě)一句簡(jiǎn)單插入語(yǔ)句就能實(shí)現刪除重復記錄的功能。為了能清楚地表述,我們首先假設存在一個(gè)產(chǎn)品信息表Products,其表結構如下:
CREATE TABLE Products (
ProductID int,
ProductName nvarchar (40),
Unit char(2),
UnitPrice money
)

圖表
圖1中可以看出,產(chǎn)品Chang和Tofu的記錄在產(chǎn)品信息表中存在重復?,F在要刪除這些重復的記錄,只保留其中的一條。步驟如下:
聯(lián)系客服