摘要: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
即可刪除重複的資料