MySQL,仅返回两列之间存在重复项的行

MySQL,仅返回两列之间存在重复项的行,sql,mysql,Sql,Mysql,我在MySQL中有一个联系人信息表 名,姓,地址,等 我想在此表上运行一个查询,该查询只返回表中多次出现的具有first和last name组合的行 我不想对“重复项”进行分组(可能只是名字和姓氏的重复项,而不是地址或出生日期等其他信息)- 我想返回所有“重复”行,以便查看结果并确定它们是否重复。这似乎是一件简单的事情,但事实并非如此 我能找到的每个解决方案要么将重复项分组,并只给我一个计数(这对于我需要对结果做什么没有用处),要么根本不起作用 这种逻辑在查询中可能吗?我应该试着用Python或

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

地址

我想在此表上运行一个查询,该查询只返回表中多次出现的具有firstlast name组合的行

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

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

我能找到的每个解决方案要么将重复项分组,并只给我一个计数(这对于我需要对结果做什么没有用处),要么根本不起作用


这种逻辑在查询中可能吗?我应该试着用Python或其他什么东西来做吗?

您应该能够在子查询中使用
groupby
方法来做这件事

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\u name
last\u name
),而
JOIN
则返回与这些名称匹配的所有记录。

您可以通过/have和sub-SELECT进行分组。差不多

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
select * from people
join (select firstName, lastName
  from people
  group by firstName, lastName
  having count(*) > 1
) dupe
using (firstName, lastName)