代码之家  ›  专栏  ›  技术社区  ›  FSm

按名字和姓氏组合删除重复记录[已关闭]

  •  -3
  • FSm  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  1
  •   Rene    6 年前

    假设您的表名是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
    )
    
        2
  •  2
  •   Paul Abbott    6 年前

    我对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()