Yalnızca belirli bir sütun için farklı / birden çok değeri olan kayıtları seçin


11

Aşağıda üyelik tabloma bir örnek verilmiştir. E-posta alanında birden fazla değere sahip bazı kayıtlar var. Yalnızca birden çok e-posta değerine sahip kayıtları seçmek istiyorum:

Üye tablosu

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

Sonucun olmasını istiyorum:

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

Ted Black'in eksik olduğuna dikkat edin çünkü e-posta adresi için yalnızca bir girişi vardır.

Üyelik masamın 4'ten fazla sütunu olduğunu açıklığa kavuşturmalıyım. Telefon ve adres, vb. İçin ek sütunlar vardır. Birden fazla telefon numarası veya adresi olduğu için bir üye için birden fazla giriş olabilir. Yalnızca birden çok e-posta adresi olan kişileri yakalamak istiyorum.

Bu veritabanı temizlemenin bir parçasıdır ve birincil anahtar eklenir. Bazı kişilerin aynı e-posta adresiyle birden fazla giriş yapabileceğini daha da netleştirmeliyim. Bu aşamada, aynı e-posta adresine sahip birden çok girişi yakalamak istemiyorum, ancak yalnızca farklı e-posta adresine sahip birden çok girişi olanları yakalamak istiyorum.

Yanıtlar:


8

Şöyle bir şey yapabilirsiniz:

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
    )
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.