我正在进行一项查询,其中我希望得到朋友的朋友,但问题是,如果我的朋友也是朋友,它也会建议他们的ids。假设用户ID为1
且他有朋友2
和3
,其中2位是4
和3
的朋友,3位是{{1}的朋友}}和5
然后它建议我2
它应该但也建议4,5
,因为他们是朋友,他们都是我的朋友,这是错误的,它应该只建议{{1} }
我的查询是
2,3
答案 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
语法,它应该是相同的,但建议使用新语法之一。