在SQL中向任一方向计算“朋友”

时间:2012-11-08 23:44:43

标签: mysql sql

我有一个模特,人们可以互相“朋友”(友谊)。我怎么能查询一个人既是朋友又是朋友的人数,而不是两次计算双向友谊?

以下是一个例子:

1 -> 2
2 -> 1
1 -> 3
4 -> 1

我希望将其注册为拥有3位朋友的#1

友谊(id,person_id,friend_id)

1 个答案:

答案 0 :(得分:0)

select person_id, sum(ct) friend_count
from (select person_id, count(*) ct from friends
      group by person_id
      UNION ALL
      select f1.friend_id, count(*) ct
      from friends f1
      left join friends f2 on f1.person_id = f2.friend_id
      where f2.person_id is null
      group by f1.friend_id) u
group by person_id