使用mysql获得朋友的朋友
我正在做一个查询,其中我想得到朋友的朋友,但问题是,如果我的朋友也是朋友,它也建议他们的ID。假设用户id是使用mysql获得朋友的朋友,mysql,Mysql,我正在做一个查询,其中我想得到朋友的朋友,但问题是,如果我的朋友也是朋友,它也建议他们的ID。假设用户id是1,他有两个朋友2和3,2个是4和3的朋友,3个是5和2的朋友,那么它建议我4,5,它应该这样做,但也建议2,3,因为他们都是朋友,而且他们也是我的朋友,哪一个是错误的,应该只建议4,5 我的问题是 SELECT fr.friend_id FROM friend_list fl ,friend_list fr WHERE fl.login_id='27' AND fl.status=
1
,他有两个朋友2
和3
,2个是4
和3
的朋友,3个是5
和2
的朋友,那么它建议我4,5
,它应该这样做,但也建议2,3
,因为他们都是朋友,而且他们也是我的朋友,哪一个是错误的,应该只建议4,5
我的问题是
SELECT fr.friend_id
FROM friend_list fl ,friend_list fr
WHERE fl.login_id='27'
AND fl.status='3'
AND fl.friend_id=fr.login_id
AND fr.status='3'
AND fl.login_id!=fr.friend_id
一种方法是在不在谓词中的位置添加
:
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
语法,它应该是相同的,但建议使用新语法。一些示例数据和表结构肯定有助于回答这个问题