Sélectionnez uniquement les enregistrements qui ont des valeurs différentes / multiples pour une colonne particulière


11

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:

Table des membres

ID   LASTNAME    FIRSTNAME    EMAIL
567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
678  Black       Ted          tedblack@gmail.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com

J'aimerais que le résultat soit:

567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com

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.

Réponses:


8

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    

3
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.