Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-在表中查找重复项_Sql_Sql Server - Fatal编程技术网

SQL Server-在表中查找重复项

SQL Server-在表中查找重复项,sql,sql-server,Sql,Sql Server,我们有一张近1亿行的大桌子。是否有人可以帮助查找表中的重复数据并将其移动到存档 表名:CustomerData 字段数:10 最新的一个应保留(该记录中提到的结束日期为空) 关于您只需要移动结束日期不为空的行 在单个交易中: INSERT INTO archive (column1, column2, ... column10) SELECT column1, column2, ..., column10 FROM CustomerData WHERE END_DATE IS NOT NULL

我们有一张近1亿行的大桌子。是否有人可以帮助查找表中的重复数据并将其移动到存档

表名:CustomerData
字段数:10

最新的一个应保留(该记录中提到的结束日期为空)


关于

您只需要移动结束日期不为空的行

在单个交易中:

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(客户id、客户名称、地址id、开始时间、结束日期等7列)

假设两个客户具有相同的地址ID,则可以获得重复的地址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
            )
        )                       
                        )
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
            )
        )
从以下位置删除:-CustomerDAt表:-

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
            )
        )                       
                        )
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
            )
        )

用于根据与oracle数据库提供的employees表中的DeptID列类似的相同地址ID列提取重复项的内部子查询。

定义重复项。所有列的值是否相同?