2011/05/15

[T-SQL] 刪除重複資料列

都設了 PK 值,怎麼可能還會有重複的資料呢?是的這狀況是有的,而且還真被我遇到了;
參考 MSDN 這篇 文章,以下是內容說明。
首先創建一個資料表,模擬資料重複
2011-5-12 上午 10-12-16

可用以下語法查出重複的資料
2011-5-12 上午 10-14-30
  
我們可用以下語法抓出重複資料,並且另存到另一個資料表(holdkey),其中這個資料表主要作用是
紀錄有重複資料的 PK 值
2011-5-12 上午 10-16-48

接下來我們要將有重複的資料,都抓一筆資料出來另存到另一個資料表(holddups) ,
2011-5-12 上午 10-23-25

接著我們從原始資料表(t1)刪除重複的資料列,這邊會將有重複到的資料全部刪除
2011-5-12 上午 10-26-35

最後我們將之前撈出來不重複的資料(holddups)倒回到原始資料表
2011-5-12 上午 10-29-01

動作流程:
1.將資料來源(t1)有重複PK 值的資料列抓出另存資料表(holdkey)。
2.將所有重複的資料都抓一筆出來並且帶出所有欄位另存資料表(holddups)。
3.刪除資料來源資料表(t1)中所有重複的資料列,以 holdkey 資料表作為比對依據。
4.最後將不重複的資料(holddups) 倒回到資料來源(t1)。

Reference
MSDN:http://support.microsoft.com/kb/139444/zh-tw
保哥:http://blog.miniasp.com/post/2010/08/12/Remove-duplicate-rows-from-a-table-in-SQL-Server.aspx

0 Comments:

張貼留言