mysql - 如何为友谊关系创建sql(mysql)?
问题描述
我有一个mysql表:
朋友(ID,用户ID,朋友ID)
和一个表用户(id,用户名)例如:
(1,'John'), (2, 'Jerry'), (3, 'Larry), (4, 'Marry')
约翰和杰瑞是朋友,所以在朋友中我们有
(1,2)
(2,2)
拉里要求约翰成为约翰的朋友,但没有接受
(3,1)
约翰向玛丽求婚,玛丽不接受
(1,4)
有没有办法做一个 SQL 来为约翰的朋友们得到一些结果:
(1, Jerry)
在我们所有的表中
(1,2)
(2,2)
(3,1)
(1,4)
解决方案
select u.*
from friends f1
join friends f2 on f2.user_id = f1.friend_id
join users u on u.id = f1.friend_id
where f1.user_id = 1 -- John's id
将friends
表与自身连接将确保“友谊”是“双向”的。
推荐阅读
- web-scraping - 从网站填写表格和抓取网页
- python - tox.ini 是否需要转义 URL 中的锚点(哈希 #)?
- awk - 如果所有列中的值相同,则删除行
- python - sqlanydb windows 无法加载 dbcapi
- mysql - 需要从大型 mysql 转储文件中提取特定表
- d3.js - D3.js - 向二维数组添加新元素不会产生新的 dom (svg) 元素
- cvxpy - CVXPY 是否对 log_sum_exp 使用逐次逼近法?
- loopbackjs - 是否有一种等效的方法可以通过环回以编程方式执行“lb soap”?
- oauth-2.0 - 从授权服务器而不是客户端服务开始的 OAuth 2 进程
- c++11 - C++ Make function unaccessable in the child class