在 Access 中查找并删除重复记录

来源:互联网 发布:python随机数求和 编辑:程序博客网 时间:2024/05/22 14:08

如果您的 Access 数据库包含从多个源导入的数据,或者您继承了已经使用多年而且没有得到正确设置的数据库,那么该数据库中可能包含需要清除的重复记录。

要确定 Access 表中是否存在重复记录,可以使用 Access 中的“查找重复项查询向导”;如果您的表包含的重复记录不多,并且您需要先查看记录再决定删除哪些记录,“查找重复项查询向导”可以帮助您清除重复记录。但是,您也可以自动删除重复记录并保留原始记录。

查找重复的记录或字段值

  1. 打开包含重复记录的数据库。
  2. 在“数据库”窗口中的“对象”下,单击“查询”,然后单击“数据库”窗口工具栏上的“新建”
  3. “新建查询”对话框中,单击“查找重复项查询向导”,然后单击“确定”

这可能是因为 Access 正运行于沙盒模式,但您的计算机上尚未安装 Microsoft Jet 4.0 SP8 或更高版本。启用沙盒模式后,必须安装有 Jet 4.0 SP8 或更高版本,Access 才能完全发挥作用。

有关安装 Jet 升级的详细信息,请参阅 Office Online 文章关于 Microsoft Jet 4.0 SP8 或更高版本

有关沙盒模式的详细信息,请参阅 Office Online 文章关于 Microsoft Jet Expression Service 沙盒模式

  1. 在该向导中的表列表中,选择包含重复记录的表,然后单击“下一步”。
  2. 从可用字段列表中,选择包含重复信息的字段,例如,如果您想比较以不同方式书写的街道地址以查找重复记录,请选择“城市”字段。然后单击“下一步”。
  3. 从可用字段列表中,针对要在重复记录中检查的数据选择字段,例如“地址”字段。然后单击“下一步”。
  4. 输入查询的名称,例如“针对客户查找重复项”,然后单击“完成”以运行查询。

运行查询时,包含重复字段的记录(在本例中,就是同一城市的所有记录)按照该重复字段(“城市”)排序,这样就可以比较要检查的任何其他字段(例如“地址”)中的数据。在本例中,重复记录的“地址”字段包含不同的数据(例如 "崇外大街" 和 "崇德门外大街")。

删除重复查询中的示例记录

如果您的数据库只包含少量的重复记录,可以选择不需要的个别记录并将其删除。当您删除“地址”字段中不使用缩写的重复记录之后,记录将按如下方式显示。

删除重复项之后,查询中的示例记录

但是,您不能为了删除重复记录而将“查找重复项”查询转换为删除查询。这是由于“查找重复项”查询返回的是原始记录和该记录的所有副本,方便您选择要删除的版本。因此,如果将“查找重复项”查询转换为删除查询,将会同时删除原始记录和重复记录。但是,如果您不需要选择待删除的版本,则有一种既可以保留原始记录、又能自动删除重复记录的方法。

自动删除重复记录并保留原始记录

从表中删除重复记录需要两个步骤。第一步,复制包含重复记录的表的结构,生成包含重复记录的所有字段的主键。第二步,创建并运行从原始表到新表的追加查询。由于主键字段不能包含重复记录,因此这一过程将生成不含重复记录的表。

复制该表并使包含重复项的字段成为主键

  1. 在“数据库”窗口中选择该表。
  2. 单击工具栏上的“复制”
  3. 然后单击工具栏上的“粘贴”
  4. “粘贴表方式”对话框中,键入已复制的表的名称,单击“只粘贴结构”,然后单击“确定”
  5. 在“设计”视图中打开新表,选择复制表中包含重复记录的字段。
  6. 单击工具栏上的“主键”以基于选定字段创建主键。
  7. 保存并关闭该表。

仅将唯一的记录追加到新表

  1. 基于包含重复记录的原始表创建一个新查询。
  2. 在“查询设计”视图中,单击工具栏上的“查询类型”,然后单击“追加查询”
  3. “追加”对话框中,在“表名称”列表中单击新表的名称,然后单击“确定”
  4. 添加来自原始表的所有字段,方法是将星号 (*) 拖动到查询设计网格中。
  5. 单击工具栏上的“运行”
  6. 当您收到将要追加行的消息时,请单击“是”
  7. 当您收到 Microsoft Access 无法在追加查询中追加所有记录时,请单击“是”。这样,只会将不重复的记录传输到新表中,放弃重复记录。

打开该表查看结果。如果您确定新表的不重复记录是正确的,则可以删除原始表,然后使用原始表的名称重命名新表。

0 0
原创粉丝点击