怎么删除ACCESS中的重复记录 只保留一条

2024-11-08 17:51:43
推荐回答(3个)
回答(1):

首先备份你的数据库.然后尝试下面的方法.从表中删除重复记录需要两个步骤.
第一步,创建包含重复项的表结构的副本,然后生成所有包含重复项的字段的主键.
第二步,创建并执行由原始表到新表的追加查询。因为主键字段不能包含重复记录,所以此过程将生成一个不含重复记录的表.复制表并生成包含重复项的字段的主键
操作方法:在“数据库”窗口中,单击“对象”下的“表”
单击要删除重复记录的表名称。
单击工具栏上的“复制”
单击工具栏上的“粘贴”。
在“粘贴表方式”对话框中,键入复制表的名字,再单击“只粘贴结构”选项,然后单击“确定”按钮。
在“设计”视图中打开新表,然后在复制的表中选择包含重复项的字段。
单击工具栏上的“主键”按钮,以便根据选定的字段创建主键。
保存并关闭表。在新表中追加唯一值记录。
操作方法:根据包含重复项的原始表新建一个查询。
在查询“设计”视图中,单击工具栏上的“查询类型”,再单击“追加查询”。
在“追加”对话框中,在“表名称”列表中单击新表的名称,然后单击“确定”。
将星号(*)拖到查询设计网格,使新表包含原始表的所有字段。
单击工具栏上的“运行”。
收到追加行的信息时,请单击“是”按钮。
收到MicrosoftAccess不能在追加查询中添加全部记录的信息时,请单击“是”按钮。这次仅将有唯一值的记录传送到新表中,并丢弃了重复项。
打开表查看结果。
确定新表有正确的唯一记录后,就可以删除原始表,然后使用原始表名来为新表重新命名。我是学MSSQL的,所以对MSSQL更熟悉
但Access也略知一二希望这个方法能够帮到你.再次提醒,请先备份你的mdb建议:
为了以后避免这些不必要的问题.可以把不允许重复的字段设为主键.

回答(2):

Sub del()
Dim Rs As New ADODB.Recordset
Rs.Open "select * from a", CurrentProject.Connection, adOpenDynamic, adLockOptimistic 'a为我要删除的有重复记录的表,先对a表做一些处理:"隶属单位"字段按生或者降序排列,这样,相同的记录都是按顺序排列了,

Dim del1As String '定义一个字符窜变量,存放"隶属单位"字段值,用他和当前记录做比较,值相同则删除当前记录,不同则将当前记录赋值给字符变量DEL1.
Rs.MoveFirst

del1 = Rs.Fields(5).Value'这里可以优化,将第一条记录的"隶属单位"值赋给变量,"隶属单位"在表的第6列上,从0开始数的,Rs.Fields(5).Value
Do While Not Rs.EOF

Rs.MoveNext
Debug.Print del1
If Rs.Fields(5).Value = del1 Then

Rs.Delete 'adAffectCurrent
Else

del1 = Rs.Fields(5).Value

End If

Loop
Set Rs = Nothing

End Sub

回答(3):

最简单的方法如下:

  1. 点击查询-新建-查找重复项查询向导,建立一个查询。

  2. 运行查询,你会看到表中所有的重复项记录。

  3. 除保留一条外选中其余所有记录,点击DELETE键即可删除所有被选中的记录。