代码之家  ›  专栏  ›  技术社区  ›  Richard Waite

mysql,只返回两列中有重复项的行

  •  2
  • Richard Waite  · 技术社区  · 16 年前

    我在mysql中有一个联系人信息表;

    名字 , , 地址 , .

    我想对此表运行一个查询,该查询只返回 第一 多次出现在表中的组合。

    我不想将“重复”分组(可能只是名字和姓氏的重复,而不是地址或出生日期等其他信息)-

    我想返回所有“重复”行,这样我就可以查看结果并确定它们是否是重复的。这似乎是一件简单的事情,但事实并非如此。

    我能找到的每一个解决方案都是把被骗的人分成两组,并且只给我一个计数(这对我需要处理的结果没有帮助),或者根本不起作用。

    这种逻辑在查询中是可能的吗?我应该试着用python还是别的什么语言来做?

    3 回复  |  直到 16 年前
        1
  •  7
  •   Peter Lang    16 年前

    你应该可以用 GROUP BY 子查询中的方法。

    SELECT t.first_name, t.last_name, t.address
    FROM your_table t
    JOIN ( SELECT first_name, last_name
           FROM your_table
           GROUP BY first_name, last_name
           HAVING COUNT(*) > 1
         ) t2
      ON ( t.first_name = t2.first_name, t.last_name = t2.last_name )
    

    子查询返回所有名称( first_name last_name )存在不止一次, JOIN 返回与这些名称匹配的所有记录。

        2
  •  1
  •   Adriaan Stander    16 年前

    你可以用一个 按/有和子选择分组 . 有点像

    SELECT  t.*
    FROM    Table t INNER JOIN
            (
                SELECT  FirstName, LastName
                FROM    Table 
                GROUP BY FirstName, LastName
                HAVING COUNT(*) > 1
            ) Dups ON t.FirstName = Dups.FirstName
                    AND t.LastName = Dups.LastName
    
        3
  •  1
  •   Matt    16 年前
    select * from people
    join (select firstName, lastName
      from people
      group by firstName, lastName
      having count(*) > 1
    ) dupe
    using (firstName, lastName)