Selecione apenas os registros que possuem valores diferentes / múltiplos para uma coluna específica

11

Abaixo está um exemplo da minha tabela de associação. Existem alguns registros com vários valores no campo de email. Eu só quero selecionar os registros que têm vários valores de email:

Tabela de membros

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

Eu gostaria que o resultado 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

Observe que Ted Black está ausente porque ele tem apenas uma entrada para o endereço de email.

Devo esclarecer que minha tabela de associação possui mais de 4 colunas. Existem colunas adicionais para telefone e endereço, etc. E pode haver várias entradas para um membro porque ele tem mais de um número de telefone ou endereço. Eu só quero capturar as pessoas que têm vários endereços de email.

Isso faz parte de uma limpeza do banco de dados e uma chave primária será adicionada. Devo esclarecer ainda que algumas pessoas podem ter várias entradas com o mesmo endereço de e-mail. Nesta fase, não quero capturar essas entradas múltiplas com o mesmo endereço de email, mas apenas aquelas que possuem entradas múltiplas com endereço de email diferente.

AlGator
fonte

Respostas:

8

Você poderia fazer algo como:

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    
Lennart
fonte
3
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
Victor111
fonte