删除重复的记录,按姓氏和名字合并

时间:2018-08-08 22:50:30

标签: ms-access access-vba duplicates

我们有一个包含以下数据的表:

ID         FirstName        LastName
1          jj               ff
2          jj               hh
3          jj               ff

我只想删除名字和姓氏组合在一起的重复记录。因此,我想要的输出应该是:

ID         FirstName        LastName
1          jj               ff
2          jj               hh

如何完成这项任务?

编辑

仅说明我的问题。我的表包含ID字段作为主键。因此,在我的情况下,仅由名字和姓氏重复的记录,这意味着ID不是必须重复的,因为我的表永远不会有重复的ID。因此,我想要的删除重复记录与传统的删除方法有些不同,传统的删除方法考虑了在复制整个行字段时删除行。

2 个答案:

答案 0 :(得分:2)

我对Access的SQL方言知识不是很好,但是也许

DELETE FROM table WHERE ID NOT IN (
  SELECT MIN(t2.ID) FROM table t2
  GROUP BY t2.FirstName, t2.LastName
)

内部语句为每个名字/姓氏组合(1、2)选择第一个ID。然后删除该列表中未包含的所有内容(3)。

编辑:将FIRST()更改为MIN()

答案 1 :(得分:1)

假设您的表名是tblStudents,请使用以下命令:

DELETE 
FROM tblStudents t1
WHERE t1.ID NOT IN
(
SELECT MIN(t2.ID)
FROM tblStudents t2
WHERE t1.FirstName =  t2.FirstName
AND t1.LastName =  t2.LastName
)