仅选择特定列具有不同/多个值的那些记录


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列以上。还有电话和地址等其他栏。由于成员拥有多个电话号码或地址,因此该成员可能有多个条目。我只想捕获具有多个电子邮件地址的那些人。

这是数据库清理的一部分,将添加一个主键。我还要进一步澄清,有些人可能有多个具有相同电子邮件地址的条目。在此阶段,我不想捕获具有相同电子邮件地址的多个条目,而仅捕获具有多个具有不同电子邮件地址的条目的那些条目。

Answers:


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    

3
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.