我有一个模特,人们可以互相“朋友”(友谊)。我怎么能查询一个人既是朋友又是朋友的人数,而不是两次计算双向友谊?
以下是一个例子:
1 -> 2
2 -> 1
1 -> 3
4 -> 1
我希望将其注册为拥有3位朋友的#1
友谊(id,person_id,friend_id)
答案 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