SQL 去除重複的資料

摘要:SQL 去除重複的資料

當資料庫很龐大時, 又沒建好索引檔, 有時候出現資料重複的情形

這時候要怎麼把重複的資料去掉

例如:

c1 c2
1 1
2 2
3 3
1 1
2 2
3 3

這個資料表(t1)中, 各有兩筆(1,1), (2,2), (3,3)的資料

要把重覆的部分資料,

如果資料筆數不多, 數十筆, 數百筆, 甚至是數千筆, 或許你可以用


Select Distinct c1, c2 Into #tmp From t1
Truncate Table t1
Insert Into t1(c1, c2) Select c1, c2 from #tmp

 

可是這個方法在資料庫有很龐大時, 風險很高, 一旦資料毀了,

利用SQL 2005的ROW_NUMBER() 可以使用以下的語法


With DUP(rno)
AS
(
Select ROW_NUMBER() OVER (PARTITION BY c1, c2 ORDER BY c1)
FROM T1
)
Delete From DUP WHERE rno > 1

即可刪除重複的資料