我们有一个包含以下数据的表:
ID FirstName LastName
1 jj ff
2 jj hh
3 jj ff
我只想删除名字和姓氏组合在一起的重复记录。因此,我想要的输出应该是:
ID FirstName LastName
1 jj ff
2 jj hh
如何完成这项任务?
编辑
仅说明我的问题。我的表包含ID字段作为主键。因此,在我的情况下,仅由名字和姓氏重复的记录,这意味着ID不是必须重复的,因为我的表永远不会有重复的ID。因此,我想要的删除重复记录与传统的删除方法有些不同,传统的删除方法考虑了在复制整个行字段时删除行。
答案 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
)