保留第一个重复记录并删除其余记录

时间:2012-03-28 17:28:10

标签: duplicate-removal sql-delete ms-access-2003

This question几乎完成了我想要完成的任务,但我的表格更复杂,没有主键。我也不太了解最佳答案,t1和t2是什么意思。如果这个答案适用于我,如果有人解释代码,我将不胜感激。

我有几个月的表格,其中包含有关客户及其持有的政策的信息。每个客户端都有一个唯一的策略ID,但它们可以有多个策略,从而在相同的策略ID下生成多个记录。每个字段中的重复记录可以完全不同或完全相同。

就我的目的而言,我希望每个政策ID只保留一条记录。理想情况下,保留的记录是年龄最高的记录,但如果它太复杂则不需要。请注意,可能有多个记录的年龄是该特定策略ID的最大值,那么我们保留哪一个并不重要。

我不打算创建主键,因为在某些情况下,我将在相同的策略ID下保留两个记录,我将自己修改代码。我也不想创建另一个表,因为我正在使用10个以上的表。有人建议使用first(),但我不确定如何将其合并到查询中。

如果您需要任何其他信息,请与我们联系,并提前感谢您的帮助!

=========更新#1

好吧,看起来我的问题有点不切实际,所以我会添加一个自动编号主键。我将如何处理?

1 个答案:

答案 0 :(得分:3)

这些方面的东西:

DELETE Policies.*
FROM Policies
WHERE Policies.ID Not In (
   SELECT TOP 1 id
   FROM   policies p
   WHERE  p.policyid = policies.policyid
   ORDER  BY createdate DESC, id )