Pilih hanya catatan yang memiliki nilai yang berbeda / berganda untuk kolom tertentu

11

Di bawah ini adalah contoh dari tabel keanggotaan saya. Ada beberapa catatan yang memiliki beberapa nilai di bidang email. Saya hanya ingin memilih catatan yang memiliki beberapa nilai email:

Meja anggota

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

Saya ingin hasilnya:

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

Perhatikan bahwa Ted Black tidak ada karena dia hanya memiliki satu entri untuk alamat email.

Saya harus mengklarifikasi bahwa tabel keanggotaan saya memiliki lebih dari 4 kolom. Ada kolom tambahan untuk telepon dan alamat, dll. Dan mungkin ada beberapa entri untuk anggota karena dia memiliki lebih dari satu nomor telepon atau alamat. Saya hanya ingin menangkap orang-orang yang memiliki banyak alamat email.

Ini adalah bagian dari pembersihan basis data dan kunci utama akan ditambahkan. Saya harus mengklarifikasi lebih lanjut bahwa beberapa orang dapat memiliki beberapa entri dengan alamat email yang sama. Pada tahap ini saya tidak ingin menangkap banyak entri dengan alamat email yang sama tetapi hanya mereka yang memiliki banyak entri dengan alamat email yang berbeda.

AlGator
sumber

Jawaban:

8

Anda dapat melakukan sesuatu seperti:

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

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