首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL,只返回在两列之间存在重复项的行。

问MySQL,只返回在两列之间存在重复项的行。
EN

Stack Overflow用户
提问于 2010-03-08 15:13:20
回答 3查看 1.7K关注 0票数 2

我有一个表格在MySQL的联系信息;

名,姓,address,等。

我想在这个表上运行一个查询,它将只返回、first、和姓氏组合的行,这些行多次出现在表中。

我不想将“复本”(只能是姓名的复本,但不包括地址或生日等其他信息)分组-

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

我能找到的每一个解决方案都是分组的,只给我一个计数(这对我需要对结果做什么没有什么用处),或者根本不起作用。

这种逻辑在查询中可能吗?我应该试着用Python或者别的什么来做这个吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-08 15:17:48

您应该能够在子查询中使用GROUP BY方法来完成此操作。

代码语言:javascript
复制
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返回与这些名称匹配的所有记录。

票数 7
EN

Stack Overflow用户

发布于 2010-03-08 15:20:08

您可以通过/拥有和一个子选择来对一个组进行操作。有点像

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2010-03-08 15:21:15

代码语言:javascript
复制
select * from people
join (select firstName, lastName
  from people
  group by firstName, lastName
  having count(*) > 1
) dupe
using (firstName, lastName)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2402259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档