[英]SQL Server - Find duplicates in table
我們有近100+百萬行的大表。 有人可以幫助您如何在表格中查找重復數據並將其移至ARCHIVE
表名稱:CustomerData
字段數:10
應該保留最后一個(由END_DATE標識為該記錄中的NULL)
問候
您只需要移動END_DATE不為NULL的行?
在單筆交易中:
INSERT INTO archive (column1, column2, ... column10)
SELECT column1, column2, ..., column10
FROM CustomerData
WHERE END_DATE IS NOT NULL
DELETE CustomerData
WHERE END_DATE IS NOT NULL
假設CustomerData表的結構為:CustomerDAta(cust_id,Cust_name,Address_ID,start_time,End_Date,.....,其他7列);
並假設有2位客戶具有SAme地址ID以獲取重復項。
插入存檔表:
INSERT INTO archive (column1, column2, ... column10)
SELECT cust_id, start_Date, ...,End_Date
FROM CustomerData
WHERE END_DATE IS NOT NULL
AND Address_ID IN(
SELECT Address_ID FROM
(
SELECT Address(ID),count(Address_ID)
FROM customerDAta
GROUP BY Address_ID
HAVING count(Adddress_ID)>1
)
)
)
要刪除自:-CustomerDAt表:-
DELETE CustomerData
WHERE END_DATE IS NOT NULL
AND
Address_ID IN(
SELECT Address_ID FROM
(
SELECT Address(ID),count(Address_ID)
FROM customerDAta
GROUP BY Address_ID
HAVING count(Adddress_ID)>1
)
)
INNER子查詢以提取與Oracle數據庫提供的employees表中的DeptID列相似的相同Address_ID列上的重復項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.