0

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

我的朋友表如下所示 - 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

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

我如何提取相同的查询,不包括我已经是朋友的用户

4

2 回答 2

2

试试这个:

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'
)
于 2013-01-04T08:19:20.257 回答
0

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

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
于 2013-01-04T11:20:05.407 回答