Voici un exemple de ma table d'adhésion. Il y a des enregistrements ayant plusieurs valeurs dans le champ e-mail. Je souhaite uniquement sélectionner les enregistrements qui ont plusieurs valeurs de messagerie:
ID LASTNAME FIRSTNAME EMAIL
567 Jones Carol [email protected]
567 Jones Carol [email protected]
678 Black Ted [email protected]
908 Roberts Cole [email protected]
908 Roberts Cole [email protected]
908 Roberts Cole [email protected]
J'aimerais que le résultat soit:
567 Jones Carol [email protected]
567 Jones Carol [email protected]
908 Roberts Cole [email protected]
908 Roberts Cole [email protected]
908 Roberts Cole [email protected]
Notez que Ted Black est manquant car il n'a qu'une seule entrée pour l'adresse e-mail.
Je dois préciser que ma table d'adhésion comporte plus de 4 colonnes. Il y a des colonnes supplémentaires pour le téléphone et l'adresse, etc. Et il peut y avoir plusieurs entrées pour un membre car il/elle a plus d'un numéro de téléphone ou d'une adresse. Je souhaite uniquement capturer les personnes qui ont plusieurs adresses e-mail.
Cela fait partie d'un nettoyage de base de données et une clé primaire sera ajoutée. Je dois préciser que certaines personnes peuvent avoir plusieurs entrées avec la même adresse e-mail. À ce stade, je ne veux pas capturer ces entrées multiples avec la même adresse e-mail, mais seulement celles qui ont plusieurs entrées avec une adresse e-mail différente.
Vous pourriez faire quelque chose comme:
select distinct x.id, x.lastname, x.firstname, x.email
from t as x
join (
select id
from t
group by id
having count(distinct email) > 1
) as y
on x.id = y.Id
select x.*
from member as x
where x.id IN
(
select id
from member
group by id
having count(distinct email) > 1
)