我有一个朋友表,它跟踪我的数据库中的关系-我已经把一个查询与子查询放在一起,从朋友的朋友那里获得个人资料信息
我的朋友表看起来像下面的- 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