我正在研究“可能的朋友”功能。在这里,我需要向不是我的朋友的所有朋友显示所有朋友,也不要向我发送或没有我的待处理请求

FRIENDSHIPS
user_id
friend_id
status  (0 = pending, 1 = approved)


对于每次友谊,我都会做两个记录。假设用户1和2成为朋友...我要在where user_id=1,friend_id=2表中记录一个where user_id=2, friend_id=1和另一个friendships

当第一个用户发送请求时,将状态设置为0,而当朋友接受请求时,我将两行都更新为1

我将如何基于朋友的朋友进行建议“可能的朋友”的sql查询?

最佳答案

在这里,您...简单加入

SELECT F2.friend_id
FROM FRIENDSHIPS F
JOIN FRIENDSHIPS F2 ON F.friend_id = F2.user_id
WHERE F2.friend_id NOT IN (SELECT friend_ID FROM FRIENDSHIPS WHERE user_id = @user_id)
  AND F.user_id = @user_id

09-12 16:05