小编典典

共同朋友的SQL查询

sql

我的MySQL表结构是这样的。

USER
uid

FRIENDS
fuid,fuid2,fapproved

对于每个朋友关系,我在朋友中插入2条记录。如果用户1是用户2的朋友,则将下一行插入到FRIENDS中

1,2,1

2,1,1

1,3,1

3,1,1

2,3,1

3,2,1

用户ID 3是用户ID 1和用户ID 2的朋友

如何在一个SQL查询中获取用户ID 3?


阅读 146

收藏
2021-04-22

共1个答案

小编典典

给定两个用户@ friend1和@ friend2,找到他们的共同朋友的所有用户:

SELECT user.uid
FROM user
WHERE EXISTS(
    SELECT TOP 1 1 
    FROM Friends 
    WHERE Friends.fuid = @friend1 AND Friends.fapproved = 1 
      AND Friends.fuid2 = User.uid
  )
  AND EXISTS(
    SELECT TOP 1 1 
    FROM Friends 
    WHERE Friends.fuid = @friend2 AND Friends.fapproved = 1 
      AND Friends.fuid2 = User.uid
  )
2021-04-22