7
votes

Comment trouver des personnes avec le même nom de famille?

Vous avez une table avec 4 colonnes:

clé primaire / nom / nom de famille / prénom

Comment écrire une requête SQL pour trouver des personnes qui ont le même nom de famille?

1 / Ivan / Ivanov / Ivanovich

2 / Petr / Levinsky / Aleksandrovich

3 / Alex / Ivanov / Albertovich

devrait retourner Ivan et Alex

merci

sql

0 commentaires

5 Réponses :


0
votes

Vous souhaitez regrouper par le nom de famille, puis utiliser une clause ayant pour trouver des groupes qui ont> 1.

non testé: xxx


2 commentaires

Cela ne fait pas ce que l'OP demande (renvoyer les prénoms).


@aix - sérieusement? Je suppose que si c'est une question d'entrevue, il saura un peu sur SQL et être capable de participer aux résultats de la requête ci-dessus.



12
votes

dans standard SQL, vous pouvez simplement rejoindre la table avec lui-même: xxx

t est votre table et ID est le principal Colonne de clé.

Ceci renvoie toutes les paires distinctes de prénoms pour chaque nom de famille qui a plusieurs entrées qui ont plusieurs entrées.

Vous voudrez peut-être ajouter nom de famille à la liste de colonnes sélectionnées.


1 commentaires

Pourquoi a-t-on a.id



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

0 commentaires

0
votes

Quant à moi le moyen le plus simple consiste à grouper des enregistrements par nom de famille, puis sélectionnez ceux qui comptent plus de 1.


0 commentaires

8
votes

Si vous souhaitez trouver exactement les noms, vous devez d'abord trouver tous les noms de famille qui apparaissent plus d'une fois et la recherche de tous les noms:

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


0 commentaires