【问题标题】:How to remove multiple duplicates based on date in MS Access如何在 MS Access 中根据日期删除多个重复项
【发布时间】:2019-06-04 10:46:15
【问题描述】:

我有一张姓名和日期表。我想删除名称重复的行,只保留最近日期的行。有时有多个重复的信息行。

我下面的代码可以工作,但是我想运行一个自动循环,当没有检测到更多重复时停止,或者学习一种更好/更有效的方法。

使用下面的代码,我目前的程序是:

查询1 查询2 查询3

重复直到不再删除重复项。

Table1:

ID  Field1  Field2  Field3
3   Albert  Jacobsen 12/5/2018
5   Mia     Shaw     12/28/2018
6   Chris   Mantle   6/14/2018
7   Albert  Jacobsen 1/8/2019
8   Albert  Jacobsen 11/15/2018
9   Chris   Mantle   11/24/2018

Query 1:
SELECT Table1.Field1, Table1.Field2, Table1.Field3, Table1.ID INTO Table2
FROM Table1
GROUP BY Table1.Field1, Table1.Field2, Table1.Field3, Table1.ID
ORDER BY Table1.Field1 DESC , Table1.Field2 DESC , Table1.Field3 DESC;

Table2:
Field1  Field2  Field3  ID
Mia     Shaw     12/28/2018 5
Chris   Mantle   11/24/2018 9
Chris   Mantle   6/14/2018  6
Albert  Jacobsen 1/8/2019   7
Albert  Jacobsen 12/5/2018  3
Albert  Jacobsen 11/15/2018 8

Query 2:
SELECT Table2.Field1, Table2.Field2, Count(Table2.ID) AS CountOfID,                 
Min(Table2.ID) AS MinOfID INTO Temp_DeleteThese
FROM Table2
GROUP BY Table2.Field1, Table2.Field2
HAVING (((Count(Table2.ID))>1));

Table Temp_DeleteThese:
Field1  Field2  CountOfID MinOfID
Albert  Jacobsen 3  3
Chris   Mantle   2  6

Query 3:
DELETE DISTINCTROW Table1.*
FROM Temp_DeleteThese INNER JOIN Table1 ON Temp_DeleteThese.MinofID =             
Table1.ID;

Resulting Table1:
ID  Field1  Field2  Field3
5   Mia Shaw     12/28/2018
7   Albert  Jacobsen 1/8/2019
8   Albert  Jacobsen 11/15/2018
9   Chris   Mantle   11/24/2018

如何循环代码直到删除重复项并且只保留最近的记录,或者更有效地执行此操作?

【问题讨论】:

  • 您能否为我们更好地量化“有效”?它需要六个小时,而您希望它需要六分钟或六秒吗?
  • 一般正确的时间范围是从六小时到六分钟。

标签: sql ms-access duplicates sql-delete


【解决方案1】:

您可以使用 EXISTS 子查询删除单个查询中的所有重复记录,以确保存在具有相同名称和更新日期的行:

DELETE *
FROM Table1 t
WHERE EXISTS(
    SELECT 1
    FROM Table1 s
    WHERE s.Field1 = t.Field1
    AND s.Field2 = t.Field2
    AND s.Field3 > t.Field3
)

这会一次性删除所有应删除的行。我认为没有比这更高效的了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2013-11-27
    相关资源
    最近更新 更多