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)
我的目标是删除副本.我不关心哪一个...但我需要两个条目中的一个留在服务器上......任何人都可以了解我做错了什么?
你可以在没有第二张桌子的情况下完成 像这样的东西:
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将保留在表中.
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |