我有一个像这样的表followers
:
id |follower_id|followee_id|
1 | 1 | 2 |
2 | 1 | 3 |
2 | 1 | 4 |
3 | 2 | 3 |
4 | 2 | 4 |
5 | 3 | 2 |
6 | 4 | 6 |
follower
是user_id,followee
是他们关注的用户。
如何与用户1
找到拥有最常追随者的用户?
结果需要按共同的追随者人数排序。
例如,对于当前表,用户1
的结果为:
follower_id|common_followees|
2 | 2 |
3 | 1 |
您可以看到,4
没有出现在结果中,因为它与用户1
没有共同的追随者
我希望我能正确解释问题。
谢谢。
答案 0 :(得分:0)
这是一个自连接和聚合:
select f.follower_id, count(*) as num_common_followees
from followers f join
followers f1
on f.followees = f1.followees and f1.follower_id = 1
group by f.follower_id;
您可以添加where f.follower_id <> 1
。我想保留该行作为验证检查。