mysql查询帮助在社交网站上找到共同的朋友

mysql查询帮助在社交网站上找到共同的朋友,mysql,Mysql,我有一个名为users的数据库表,每个用户的主键都是user_id 我还有一个名为friends的表,有两个字段,user\u id和friend\u user\u id “用户id”字段始终是两个用户id中最低的一个,以避免重复条目 假设我有两个用户,假设用户id 1和用户id 4,尽管它们可以是任何东西 对于与用户1和用户4为好友的用户,即共同好友,我如何从用户表中返回所有行?我将为您提供配方: SELECT friends.friend_user_id FROM user, friends

我有一个名为users的数据库表,每个用户的主键都是user_id

我还有一个名为friends的表,有两个字段,user\u id和friend\u user\u id

“用户id”字段始终是两个用户id中最低的一个,以避免重复条目

假设我有两个用户,假设用户id 1和用户id 4,尽管它们可以是任何东西


对于与用户1和用户4为好友的用户,即共同好友,我如何从用户表中返回所有行?

我将为您提供配方:

SELECT friends.friend_user_id FROM user, friends
INNER JOIN friends ON friends.user_id = user.user_id
WHERE user.user_id = 1 
     AND  friend.friend_user_id 
          IN (SELECT friends.friend_user_id 
             FROM user, friends
             INNER JOIN friends ON friends.user_id = user.user_id
             WHERE user_id = 4)
查找用户1的所有朋友 查找用户2的所有朋友 将它们相交,结果将成为共同的朋友。 很像这样:

更新:以下是查询:

select f.friend_user_id  from friends f where f.friend_user_id in (
   select friend_user_id from friends where user_id=<id_of_user_a>)
and f.user_id=<id_of_user_b>
上述查询返回的id将是用户a和用户b的共同朋友的所有用户的id。如果要获取有关这些用户的所有详细信息、名称等,请执行以下操作:

   select f.friend_user_id,u.*  from friends f inner join users u 
   on u.user_id=f.friend_user_id
   where f.friend_user_id in (
   select friend_user_id from friends where user_id=<id_of_user_a>)
   and f.user_id=<id_of_user_b>

嗯,是的,这很明显,这只是SQL语法我挣扎,但谢谢你的帮助input@geoffs3310这只是一个小小的玩笑;看看克里斯的回答。虽然可以写得更简洁,但没有必要使用他提出的那些内部连接there@geoffs3310检查我答案的更新。我包含了我认为可以满足您需要的查询。