如何删除重复的行并将其保留在Access数据库中?

时间:2018-10-12 07:12:48

标签: sql database ms-access duplicates

I got too many entry like this in my database

我需要删除Access数据库中的重复行,有人可以通过泛型查询来执行此操作吗?因为我有多个表这个问题

1 个答案:

答案 0 :(得分:1)

您需要做两件事,

  1. 确定唯一记录的条件-列的列表是什么,其中两个或更多记录将被视为重复记录,例如JobbID和HisGuid
  2. 确定要对重复记录执行的操作-是要硬删除它们还是要设置表上的IsDeleted标志

确定了要用于唯一性的条件后,您需要从每组重复项中选择 1 条记录以保留。如下查询:

SELECT  MAX(ID)
FROM    MyTable
GROUP
BY      JobbID, HisGuid

将为您提供最高值(我假设ID列是表中所有记录中唯一的自动递增/标识列) JobbIDHisGuid都相同的一组记录。您可以根据需要使用MIN(ID),它由您决定-您只需要从每个组中选择一个记录保留

假设您要在不想保留的记录上设置IsDeleted标志,则可以将其合并到更新查询中:

UPDATE  MyTable
SET     IsDeleted = 1
WHERE   ID NOT IN
(
    SELECT  MAX(ID)
    FROM    MyTable
    GROUP
    BY  JobbID, HisGuid
)

这将获取查询的结果,该查询将检索最高ID ,并使用该结果对ID最高的所有记录将 set IsDeleted设置为1 JobbIDHisGuid相同的每组记录的ID。

我唯一不能帮助您的部分是在Access中运行这些查询,因为我没有将它们安装在我现在正在使用的PC上,并且我的内存有点生锈关于如何/在何处运行任意查询。