如何找到姓氏相同的人?

时间:2011-04-29 08:41:43

标签: sql

你有一个包含4列的表:

主键/姓名/姓氏/中间名

如何编写Sql查询以查找具有相同姓氏的人?

1 / Ivan / Ivanov / Ivanovich

2 / Petr / Levinsky / Aleksandrovich

3 / Alex / Ivanov / albertovich

应该归还伊万和亚历克斯

由于

5 个答案:

答案 0 :(得分:11)

在标准SQL中,您可以简单地将表连接到自身:

select a.name, b.name
from t as a, t as b
where a.surname = b.surname and a.id < b.id

其中t是您的表格,id是主键列。

这将返回具有多个条目的每个姓氏的所有不同的名字对。

您可能希望将surname添加到所选列的列表中。

答案 1 :(得分:8)

如果你想找到确切的名字,那么你首先应该找到出现多次的所有姓氏并找到所有姓名:

select name
  from t
  where surname in (select surname from t group by surname having count(surname) > 1);

答案 2 :(得分:0)

您希望GROUP BY姓氏,然后使用HAVING子句查找具有&gt;的任何组1。

未测试:

SELECT 
  name 
FROM 
  theTable 
WHERE Surname IN (
    SELECT
      Surname
    FROM
      theTable
    GROUP BY
      Surname
    HAVING
      COUNT(Surname) > 1)

答案 3 :(得分:0)

至于我最简单的方法是按姓氏分组记录,然后选择计数超过1的记录。

答案 4 :(得分:-1)

select surname,group_concat(firstname)
from people
group by surname
having count(firstname)> 1;