เลือกเฉพาะระเบียนที่มีค่าแตกต่างกัน / หลายค่าสำหรับคอลัมน์ใดคอลัมน์หนึ่ง


11

ด้านล่างเป็นตัวอย่างของตารางสมาชิกของฉัน มีบางระเบียนที่มีค่าหลายค่าในฟิลด์อีเมล ฉันต้องการเลือกระเบียนที่มีค่าอีเมลหลายค่าเท่านั้น:

ตารางสมาชิก

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

ฉันต้องการผลลัพธ์ที่ได้คือ:

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 หายไปเพราะเขามีที่อยู่อีเมลได้เพียงหนึ่งรายการ

ฉันควรชี้แจงว่าตารางสมาชิกของฉันมีมากกว่า 4 คอลัมน์ มีคอลัมน์เพิ่มเติมสำหรับโทรศัพท์และที่อยู่ ฯลฯ และอาจมีหลายรายการสำหรับสมาชิกเพราะเขา / เธอมีหมายเลขโทรศัพท์หรือที่อยู่มากกว่าหนึ่ง ฉันต้องการจับภาพบุคคลที่มีที่อยู่อีเมลหลายแห่งเท่านั้น

นี่เป็นส่วนหนึ่งของการล้างฐานข้อมูลและจะมีการเพิ่มคีย์หลัก ฉันควรชี้แจงเพิ่มเติมว่าบางคนอาจมีหลายรายการที่มีที่อยู่อีเมลเดียวกัน ในขั้นตอนนี้ฉันไม่ต้องการบันทึกหลายรายการด้วยที่อยู่อีเมลเดียวกัน แต่มีเพียงรายการที่มีหลายรายการที่มีที่อยู่อีเมลแตกต่างกัน

คำตอบ:


8

คุณสามารถทำสิ่งที่ชอบ:

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    

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.