Seleziona solo quei record che hanno valori diversi / multipli per una particolare colonna


11

Di seguito è riportato un esempio della mia tabella di appartenenza. Ci sono alcuni record con più valori nel campo e-mail. Voglio solo selezionare quei record che hanno più valori e-mail:

Tabella dei membri

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

Vorrei che il risultato fosse:

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

Nota che Ted Black è mancante perché ha solo una voce per l'indirizzo e-mail.

Dovrei chiarire che la mia tabella di appartenenza ha più di 4 colonne. Ci sono colonne aggiuntive per telefono e indirizzo, ecc. E potrebbero esserci più voci per un membro perché ha più di un numero di telefono o indirizzo. Voglio catturare solo quelle persone che hanno più indirizzi e-mail.

Questo fa parte della pulizia del database e verrà aggiunta una chiave primaria. Dovrei chiarire ulteriormente che alcune persone potrebbero avere più voci con lo stesso indirizzo e-mail. In questa fase non voglio catturare quelle voci multiple con lo stesso indirizzo e-mail ma solo quelle che hanno più voci con indirizzo e-mail diverso.

Risposte:


8

Potresti fare qualcosa del tipo:

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
    )
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.