2017-10-19 48 views
0

使用SQL Server Management Studio中2017年 我进口2000万左右的电子邮件列表,只是跑下面的代码,以消除任何重复:SQL查询成功完成,但不会导致

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

DELETE FROM CTE WHERE RN<>1 

它说,查询成功执行,并且在消息选项卡下显示有1000万行受到影响(预期),但没有结果选项卡。 我想导出到一个CSV文件。 我检查执行设置,因为Parseonly和Noexec设置有时会导致问题,但它们都是关闭的。

我是相对较新的SQL,任何帮助将不胜感激。 工作室拍摄画面 enter image description here 执行设置 enter image description here

+1

你在做删除,这只是删除记录。如果你想要显示记录,你需要选择 – HoneyBadger

+1

这里没有选择语句。你执行了一个DELETE,它不会输出rowcount以外的任何东西。你期望输出什么? –

+0

下次请使用更好的质量上传屏幕截图,以便我们可以真正看到事物(工作室截图)。 – Moseleyi

回答

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