你有一个包含4列的表:
主键/姓名/姓氏/中间名
如何编写Sql查询以查找具有相同姓氏的人?
1 / Ivan / Ivanov / Ivanovich2 / Petr / Levinsky / Aleksandrovich
3 / Alex / Ivanov / albertovich应该归还伊万和亚历克斯
由于
答案 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;