选择重复项并根据非重复列进行选择

时间:2017-08-01 11:34:55

标签: postgresql postgresql-9.5

我需要在下面的表上编写一个查询,只有当同一个电子邮件和名称由多个成员共享时才能获取记录。在下面的示例中,我需要将结果集作为

100          a@a.com       nameA  
300           a@a.com      nameA

Member  email               name  
100           a@a.com       nameA  
100           a@a.com       nameA  
300           a@a.com       nameA  
200           b@b.com       nameB

1 个答案:

答案 0 :(得分:0)

我怀疑你有拼写错误,你的意思是100而不是200。如果是这样,那么有一种方法:

with your_table(Member, email , name ) as (
    select 100,'a@a.com','nameA' union all
    select 100,'a@a.com','nameA' union all
    select 300,'a@a.com','nameA' union all
    select 200,'b@b.com','nameB'  
)

-- below is actual query:

select distinct your_table.* 
from your_table
inner join (
    select  email , name from your_table
    group by email ,  name
    having count(distinct Member) > 1
) t
on your_table.email = t.email and your_table.name = t.name