你有4個列的表格:如何查找具有相同姓氏的人?
主鍵/名/姓氏/中間名
如何編寫SQL查詢來發現人誰擁有相同的姓氏?
1 /伊萬/諾夫/諾維奇
2 /彼得/ Levinsky /亞歷山德羅
3 /亞歷克斯/諾夫/ albertovich
應返回伊凡和Alex
由於
你有4個列的表格:如何查找具有相同姓氏的人?
主鍵/名/姓氏/中間名
如何編寫SQL查詢來發現人誰擁有相同的姓氏?
1 /伊萬/諾夫/諾維奇
2 /彼得/ Levinsky /亞歷山德羅
3 /亞歷克斯/諾夫/ albertovich
應返回伊凡和Alex
由於
在標準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
添加到選定列的列表中。
你想GROUP BY的姓氏,然後使用HAVING子句來找到任何> 1的組。
未經測試:
SELECT
name
FROM
theTable
WHERE Surname IN (
SELECT
Surname
FROM
theTable
GROUP BY
Surname
HAVING
COUNT(Surname) > 1)
select surname,group_concat(firstname)
from people
group by surname
having count(firstname)> 1;
對我來說最簡單的方法是按姓氏組記錄,然後選擇那些具有計數大於1
如果你想找到確切的名字,那麼你應該首先找到出現超過所有姓氏一次,並找到所有的名字:
select name
from t
where surname in (select surname from t group by surname having count(surname) > 1);
+1是迄今唯一正確的答案 – Martin 2011-04-29 08:58:28
這不會做OP的要求(返回名字)。 – NPE 2011-04-29 08:49:46
@aix - 認真嗎?我假設,如果是面試問題,他會知道一些關於SQL的知識,並能夠加入上述查詢的結果。 – Fermin 2011-04-29 08:56:33