開發人員的噩夢——刪除重覆記錄
想必每一位開發人員都有過類似的經歷,在對資料庫進行查詢或統計的時候不時地會碰到由於表中存在重複的記錄而導致查詢和統計結果不準確。解決該問題的辦法就是將這些重複的記錄刪除,只保留其中的一條。
在sql server中除了對擁有十幾條記錄的表進行人工刪除外,實現刪除重覆記錄一般都是寫一段**,用光標的方法一行一行檢查,刪除重複的記錄。因為這種方法需要對整個表進行遍歷,所以對於表中的記錄數不是很大的時候還是可行的,如果一張表的資料達到上百萬條,用光標的方法來刪除簡直是個噩夢,因為它會執行相當長的一段時間。
四板斧——輕鬆消除重覆記錄
殊不知在sql server中有一種更為簡單的方法,它不需要用游標,只要寫一句簡單插入語句就能實現刪除重覆記錄的功能。為了能清楚地表述,我們首先假設存在乙個產品資訊表products,其表結構如下:
create
table
products (
productid
int,
productname
nvarchar(40
),unit
nvarchar(40
),unitprice
money
)表中的資料如圖1:
圖1中可以看出,產品chang和tofu的記錄在產品資訊表中存在重複。現在要刪除這些重複的記錄,只保留其中的一條。步驟如下:
第一板斧——建立一張具有相同結構的臨時表
create
table
products_temp (
productid
int,
productname
nvarchar(40
),unit
nvarchar(40
),unitprice
money
) 第二板斧——為該錶加上索引,並使其忽略重複的值
方法是在企業管理器中找到上面建立的臨時表products _temp,單擊滑鼠右鍵,選擇所有任務,選擇管理索引,選擇新建。如圖2所示。
按照圖2中圈出來的地方設定索引選項。
第三板斧——拷貝產品資訊到臨時表
insert
into
products_temp
select
*from
products
delete
products
insert
into
products
select
*from
products_temp
drop
table
products_temp
sql server 2005下設定索引:
建立索引的指令碼:
**use
[test]go
/****** 物件: index [ix_productid] 指令碼日期: 12/29/2009 11:33:41 *****
*/create
unique
nonclustered
index
[ix_productid]on
[dbo].
[products_temp](
[productid
]asc
)with
(sort_in_tempdb
=off
, drop_existing
=off
, ignore_dup_key =on
, online
=off
) on
[primary
]
在SQL Server中快速刪除重覆記錄
開發人員的噩夢 刪除重覆記錄 想必每一位開發人員都有過類似的經歷,在對資料庫進行查詢或統計的時候不時地會碰到由於表中存在重複的記錄而導致查詢和統計結果不準確。解決該問題的辦法就是將這些重複的記錄刪除,只保留其中的一條。在sql server中除了對擁有十幾條記錄的表進行人工刪除外,實現刪除重覆記錄一...
在SQL Server中快速刪除重覆記錄
開發人員的噩夢 刪除重覆記錄 想必每一位開發人員都有過類似的經歷,在對資料庫進行查詢或統計的時候不時地會碰到由於表中存在重複的記錄而導致查詢和統計結果不準確。解決該問題的辦法就是將這些重複的記錄刪除,只保留其中的一條。在sql server中除了對擁有十幾條記錄的表進行人工刪除外,實現刪除重覆記錄一...
在SQL Server中快速刪除重覆記錄
databaseadmin 17 七月,2006 07 39 開發人員的噩夢 刪除重覆記錄 想必每一位開發人員都有過類似的經歷,在對資料庫進行查詢或統計的時候不時地會碰到由於表中存在重複的記錄而導致查詢和統計結果不準確。解決該問題的辦法就是將這些重複的記錄刪除,只保留其中的一條。在sql serve...