我有一张表格如下。
PersonId FriendId p1 f1 p1 f2 p2 f1 p2 f3 p3 f1 p4 f1 p4 f2
我需要让所有拥有(例如f1和f2,可能是任意数量的朋友)的人(PersonId)成为朋友。什么是一个很好的SQL? 在上面的例子中,我需要得到答案
PersonId p1 p4
答案 0 :(得分:-1)
如果不可能存在两个完全相同的行,则可以使用以下方法。
select personId
from your_table
where friendId in ('f1', 'f2')
group by personId
having count(*) = 2
如果可能有两行具有相同的personId
和friendId
,则使用count(distinct friendId)
代替count(*)
答案 1 :(得分:-2)
你可以用这个:
SELECT personid
FROM table_name
WHERE friendid IN ('f1', 'f2')
GROUP BY personid
HAVING COUNT(DISTINCT friendid) = 2;