0

使用 SQL Server Management Studio 2017。我导入了大约 2000 万封电子邮件的列表,只需运行以下代码即可删除所有重复项:

WITH CTE AS
(
    SELECT *,ROW_NUMBER() OVER (PARTITION BY email ORDER BY email) AS RN
    FROM dbo.cleanemails
)

DELETE FROM CTE WHERE RN<>1

它说 Query 执行成功,在 Messages 选项卡下显示 1000 万行受影响(预期),但没有 Results 选项卡。我想导出到 csv 文件。我检查了执行设置,因为 Parseonly 和 Noexec 设置有时会导致问题,但它们都处于关闭状态。

我对 SQL 比较陌生,任何帮助将不胜感激。Studio 屏幕截图 在此处输入图像描述 执行设置 在此处输入图像描述

4

1 回答 1

5

如果要查看已删除的记录,则可以使用OUTPUT子句

;WITH CTE
     AS (SELECT *,
                Row_number()OVER (PARTITION BY email
                    ORDER BY email) AS RN
         FROM   dbo.cleanemails)
DELETE FROM CTE
output deleted.*
WHERE  RN <> 1 
于 2017-10-19T14:06:54.337 回答