使用mysql获取朋友的朋友

时间:2013-12-31 09:29:37

标签: mysql

我正在进行一项查询,其中我希望得到朋友的朋友,但问题是,如果我的朋友也是朋友,它也会建议他们的ids。假设用户ID为1且他有朋友23,其中2位是43的朋友,3位是{{1}的朋友}}和5然后它建议我2它应该但也建议4,5,因为他们是朋友,他们都是我的朋友,这是错误的,它应该只建议{{1} }

我的查询是

2,3

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是添加WHERE NOT IN谓词:

SELECT fr.friend_id 
FROM friend_list fl 
INNER JOIN friend_list fr  ON fl.friend_id = fr.login_id
                          AND fl.status = fr.status
WHERE fl.login_id = 27 AND fl.status = '3'
  AND fr.friend_id NOT IN(SELECT friend_id
                          FROM friend_list
                          WHERE login_id = 27 AND friend_id IS NOT NULL)

NOT IN之后的子查询将选择您传递的朋友ID的朋友。排除它们。

对于您在问题中提供的示例,这只会给您4,5:

| FRIEND_ID |
|-----------|
|         4 |
|         5 |

请注意:我使用了明确的JOIN语法而不是您正在使用的旧JOIN语法,它应该是相同的,但建议使用新语法之一。