close
在維護舊系統時,有時候會遇到有些資料表沒有按照資料表的建立規則建PK
當資料表中出現重複資料時,會不知道該用什麼條件刪除多餘的資料
方法一
如果在可以下DDL語法時,可以先建立一張暫存表
將原資料表的資料,Distinct過後放入暫存表中
再刪除原資料表的資料,倒入暫存表的資料
但有時候額外建立資料表會有一些管理上的問題
如果要處理不同資料表勢必要建立對應的暫存表
維護上會略為麻煩
可以單純透過語法進行處理
方法二
DELETE FROM [TABLENAME]
WHERE RID IN
(
SELECT RID
FROM
(
SELECT ROWID RID,ROW_NUMBER()OVER(PARTITION BY [COLUMN_NAME] ORDER BY [COLUMN_NAME]) RN--給予順序
FROM [TABLENAME]
WHERE [CONDITION]--所要指定的資料群集
) WHERE RN>1--篩選掉第一筆的RID
);
每筆資料列在資料表中都會存有唯一的資料編號 ROWID
透過ROW_NUMBER()將指定欄位進行編號,在外層再挑出RN>1資料的ROWID(重富資料)
根據這些ROWID進行刪除的動作,即可透過不新增暫存表的方式把重複資料進行刪除
全站熱搜
留言列表