实际上,我有2个表Friends表和users表,我想要达到的目的是通过检查另一个用户的朋友来获取我的共同朋友,并从users表中获取这些共同朋友的数据
表的朋友是这样建立的
id | user1 | user2 | friend_status
然后表格数据看起来像这样
1 | 1 | 2 | 1 2 | 1 | 3 | 1 3 | 2 | 3 | 1 4 | 1 | 4 | 1 5 | 2 | 4 | 1
然后假设我是ID为2的用户,那么在该表中我有3个朋友-1、3和4。我要检索的是与用户1相同的朋友,他们也有3个朋友-2、3和4。并从表用户中检索2个共同的共同朋友3和4的数据
您可以使用UNION来获得用户朋友:
UNION
SELECT User2 UserId FROM friends WHERE User1 = 1 UNION SELECT User1 UserId FROM friends WHERE User2 = 1
然后,UNION为两个不同的用户加入其中的两个,UserId即可获得共同的朋友:
UserId
SELECT UserAFriends.UserId FROM ( SELECT User2 UserId FROM friends WHERE User1 = 1 UNION SELECT User1 UserId FROM friends WHERE User2 = 1 ) AS UserAFriends JOIN ( SELECT User2 UserId FROM friends WHERE User1 = 2 UNION SELECT User1 UserId FROM friends WHERE User2 = 2 ) AS UserBFriends ON UserAFriends.UserId = UserBFriends.UserId