如何仅选择分享姓氏的人? SQL

时间:2014-12-04 22:09:04

标签: mysql sql

我仍然很擅长使用数据库,这个问题让我很难过。

我有一个包含名字和姓氏列的人员表。我正在尝试创建一个查询,该查询只会选择与表中的其他人共享姓氏的人。

例如,如果我有这两列:

First_Name      Last_Name
John            Doe
Jane            Doe
Mary            Shmo
Kate            Shmo
Matt            Diego
Joe             Smith

我想要的结果是:

First_Name  Last_name
John        Doe
Jane        Doe
Mary        Shmo
Kate        Shmo

我的代码是:

select count(*), last_name, first_name 
from people
group by last_name
having count(*) > 1

这会获取共享的姓氏,但只输出其中一个,而不是所有的名字。

我确信这有一个简单的解决办法,但我无法弄明白。

2 个答案:

答案 0 :(得分:3)

你快到了。现在你已经拥有了你关心的姓氏集,只需围绕它进行另一个查询:

select * from people
where last_name in
(
    select last_name
    from people
    group by last_name
    having count(*) > 1
)

答案 1 :(得分:2)

您可以使用子查询来完成此操作:

select p.*
from people as p
     inner join (
                   select last_name 
                   from people 
                   group by last_name 
                   having count(first_name) > 1
                ) as a on p.last_name = a.last_name