MYSQL - 锻炼和计算共同的朋友



今晚我有点想不通逻辑。我需要计算一个人与一个用户共享了多少个朋友。(共同的朋友)

我有一个表格,里面有一个用户ID,还有一个朋友的用户ID,我的布局示例如下:

第一个结果意味着用户1与用户2 是朋友

[ID] - [FriendsID]
1-2
1-3
1-4
1-15
2-1
2-4
3-1
3-4
4-1
4-2
4-3
4-15
5-15
15-1
15-5
15-4

当我的PHP页面加载时,它将加载该用户的朋友列表,例如User1。这将返回(2,3,4.15)的"FriendID"

然后我需要计算出人们与用户有多少共同的朋友:1例如,

1 is friends with 2,3,4
2 is friends with 1,4
3 is friends with 1,4,15
This would mean that “2” shares ONE mutual friend with 1
This would mean that “3” shares TWO mutual friend with 1

等等

我的输出需要是[FriendID][Count]

朋友ID是朋友

计数与userID 1 有多少共同的朋友

(手动写入的示例数据)

您可以在friendsid列上使用自联接:

select t1.id, t2.id, count(*) as num_mutual_friends
from table t1 join
     table t2
     on t1.friendsid = t2.friendsid and t1.id <> t2.id
group by t1.id, t2.id;

我注意到你的数据是对称的,所以(1,2)和(2,1)都在数据中。这意味着这个逻辑应该适用于您。如果只关心一个id,则可以添加where子句。

相关内容

  • 没有找到相关文章

最新更新