Mysql SQL按用户名从朋友表中获取朋友
好的,我被表设计卡住了,我现在无法更改,我需要基于用户名从friends\u relationship表中获取他的所有朋友 我现在所拥有的:Mysql SQL按用户名从朋友表中获取朋友,mysql,sql,relationship,Mysql,Sql,Relationship,好的,我被表设计卡住了,我现在无法更改,我需要基于用户名从friends\u relationship表中获取他的所有朋友 我现在所拥有的: select distinct(username) from members m inner join members_friends f on f.id_memb_friend1 = m.id where (f.id_memb_friend1 = 173 or f.id_memb_friend2 = 173) members表包含以下列:id、用户名
select distinct(username) from members m
inner join members_friends f on f.id_memb_friend1 = m.id
where (f.id_memb_friend1 = 173 or f.id_memb_friend2 = 173)
members表包含以下列:id、用户名
member\u friends表中有id、id\u memb\u friend1、id\u memb\u friend2列
我发布的查询还将返回id为173的成员的用户名,该成员是所有者,例如他的昵称是极好的。
我想要实现的是使用用户名将所有的朋友聚集在一起,基于我提供的用户名flander=ID173
更新:
我想做到这一点:
输入:用户名=1
操作:获取好友的用户名及其ID
输出:
成员id=5
用户名=约翰
members.id=15
用户名=劳拉
成员id=66
用户名=亚历克斯
等等…更新以适应评论中表达的新要求。 更新以适应更新问题中表达的新要求 您的问题与是否要基于用户名或用户id进行搜索不一致。虽然您的查询使用id,但我根据澄清的要求使用用户名。我还假设你只想要朋友的用户名。此外,从初始查询中可以看出,您希望查看两个方向上的关系:在friend1上匹配,显示所有friend2;在friend2上匹配,显示所有friend1 有一种方法可以做到这一切:
select mm.id, mm.username
from members mm
inner join member_friends f on f.id_memb_friend1 = mm.id
inner join members m on m.id = f.id_memb_friend2
where m.username = 'Splendid'
union distinct
select mm.id, mm.username
from members mm
inner join member_friends f on f.id_memb_friend2 = mm.id
inner join members m on m.id = f.id_memb_friend1
where m.username = 'Splendid'
选择案例f.id\u memb\u friend1当'173'时,然后选择f.id\u memb\u friend2其他f.id\u memb\u friend1结束为MemberID,m.username来自成员\u friends f.id\u memb\u friend1=m.id或f.id\u memb\u friend2=m.id上的内部加入成员m
如果f.id_memb_friend1=173或f.id_memb_friend2=173您的问题有点令人困惑。您可以发布什么样的示例输出以及每个列需要来自哪个表吗?我提供了输出。。。感谢您的输入,然后您需要再次加入members表。答案已更新。再次更新以提供朋友的ID,如更新的问题中所述。都很好,只有u缺失=在第二次内部连接处。谢谢,我会再测试一下,然后接受它!哎呀。添加了缺少的=符号。