Mysql查询锻炼朋友的朋友谁不是在我的朋友列表


mysql query to workout friends of friends who are not in my friends list

我有一个朋友表,它跟踪我的数据库中的关系-我已经把一个查询与子查询放在一起,从朋友的朋友那里获得个人资料信息

我的朋友表看起来像下面的- id在两个方向都走两次。我是id为1的用户-我的朋友将是5 &3

rel 1 | rel 2
--------------
1     |    5
5     |    1
3     |    5
5     |    3
1     |    3
3     |    1

我的查询看起来像

SELECT user_id, first_name, last_name, email, town, county, profile_img_small 
FROM sign_up 
WHERE user_id IN (SELECT DISTINCT f.rel2 FROM friends f
WHERE f.rel1 IN (SELECT f2.rel2 FROM friends f2 WHERE f2.rel1 = '$my_id') AND f.rel2 !    = '$my_id') ORDER BY first_name ASC, last_name ASC

这样做的问题是,这个脚本的目的是建议你可能认识的人,但仍然包括我的朋友列表中的人。

我如何拉相同的查询排除用户我已经是朋友

试试这个:

SELECT *
FROM sign_up
WHERE user_id NOT IN
(
   SELECT rel1 FROM friends WHERE rel2 = '$my_id'
   UNION 
   SELECT rel2 FROM friends WHERE rel1 = '$my_id'
)

我使用的查询如下-我基本上在末尾添加了另一个子查询

SELECT user_id, first_name, last_name, email, town, county, profile_img_small 
FROM sign_up 
WHERE user_id IN (SELECT DISTINCT f.rel2 FROM friends f
WHERE f.rel1 IN (SELECT f2.rel2 FROM friends f2 WHERE f2.rel1 = '$my_id') AND f.rel2 != '$my_id') AND user_id NOT IN (SELECT rel2 FROM friends WHERE rel1 = '$my_id') ORDER BY first_name ASC, last_name ASC