簡體   English   中英

SQL Server-在表中查找重復項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM