用确切的朋友询问人

时间:2017-12-01 08:45:09

标签: sql postgresql

我有一张表格如下。

PersonId     FriendId
    p1        f1
    p1        f2
    p2        f1
    p2        f3
    p3        f1
    p4        f1
    p4        f2

我需要让所有拥有(例如f1和f2,可能是任意数量的朋友)的人(PersonId)成为朋友。什么是一个很好的SQL? 在上面的例子中,我需要得到答案

PersonId
    p1
    p4

2 个答案:

答案 0 :(得分:-1)

如果不可能存在两个完全相同的行,则可以使用以下方法。

select personId
from your_table
where friendId in ('f1', 'f2')
group by personId
having count(*) = 2

如果可能有两行具有相同的personIdfriendId,则使用count(distinct friendId)代替count(*)

答案 1 :(得分:-2)

你可以用这个:

SELECT personid
FROM table_name
WHERE friendid IN ('f1', 'f2')
GROUP BY personid
HAVING COUNT(DISTINCT friendid) = 2;