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

SQL是否可以找到具有重复项的记录?

  •  5
  • waiwai933  · 技术社区  · 15 年前

    我可以使用SQL查询查找两个字段中一个字段相同的记录吗?也就是说,我可以使用下表并通过比较名称列(并忽略电话)返回1,3(ID)吗?

        ID | Name | Phone
    
        1  | Bob  | 5555555555
        2  | John | 1234567890
        3  | Bob  | 1515151515
        4  | Tim  | 5555555555
    3 回复  |  直到 15 年前
        1
  •  10
  •   Joachim Sauer    15 年前

    要获取多次存在的所有名称,可以执行以下语句:

    SELECT Name FROM People GROUP BY Name HAVING COUNT(*)>1;
    
        2
  •  2
  •   martin clayton egrunin    15 年前

    要获得以这种方式连接的重复“1,3”的ID,请使用 GROUP_CONCAT

    SELECT GROUP_CONCAT( ID SEPARATOR ',' )
    FROM Table
    GROUP BY Name
    HAVING COUNT(*) > 1
    
        3
  •  0
  •   Jonathan Leffler    15 年前

    另一种不一定有效的方法是使用自联接:

    SELECT P1.Id, P2.Id
      FROM People P1, People P2
     WHERE P1.Id < P2.Id
       AND P1.Name = P2.Name;
    

    第一个条件确保只看到对(1,3),而不看到无关对(3,1)或相同行(1,1)、(3,3)。