试图删除SQL数据库中的重复条目删除了所有记录.什么地方出了错?

swo*_*978 2 sql sql-server sql-server-2005

我试图删除数据库中的重复记录.唯一的区别是PrimaryKey是一个uniqueidentifier.我有大约1500个被欺骗的条目,所以我正在查看大约3000个条目.所以我分开了大约60个条目(根据收到的日期)并执行了我的代码,将它们减少到30,而OH CRAP 30则消失了!这是我试过的代码:

DELETE dupes
FROM [emailTable] dupes, [emailTable] fullTable
WHERE (dupes.ReceivedOn > '2009-08-18 23:59:59.999' AND dupes.ReceivedOn < '2009-08-20 00:00:00.000')
      AND (dupes.emlPath = fullTable.emlPath)
      AND NOT (dupes.GUID = fullTable.GUID)
Run Code Online (Sandbox Code Playgroud)

我的目标是删除副本.我不关心哪一个...但我需要两个条目中的一个留在服务器上......任何人都可以了解我做错了什么?

Tho*_*rin 7

你可以在没有第二张桌子的情况下完成 像这样的东西:

SELECT * FROM emailTable
WHERE EXISTS (
    SELECT * FROM emailTable AS t2
    WHERE t2.emlPath = emailTable.emlPath AND
    t2.GUID > emailTable.GUID)
Run Code Online (Sandbox Code Playgroud)

这将显示哪些记录即将被删除.如果没关系,请将其更改为:

DELETE FROM emailTable
WHERE EXISTS (
    SELECT * FROM emailTable AS t2
    WHERE t2.emlPath = emailTable.emlPath AND
    t2.GUID > emailTable.GUID)
Run Code Online (Sandbox Code Playgroud)

t2.GUID > emailTable.GUID将确保具有该记录的一条记录emlPath将保留在表中.