我仍然很擅长使用数据库,这个问题让我很难过。
我有一个包含名字和姓氏列的人员表。我正在尝试创建一个查询,该查询只会选择与表中的其他人共享姓氏的人。
例如,如果我有这两列:
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
这会获取共享的姓氏,但只输出其中一个,而不是所有的名字。
我确信这有一个简单的解决办法,但我无法弄明白。
答案 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