SQL Server-在表中查找重复项
我们有一张近1亿行的大桌子。是否有人可以帮助查找表中的重复数据并将其移动到存档 表名:CustomerDataSQL 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
字段数: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列提取重复项的内部子查询。定义重复项。所有列的值是否相同?