sql - 选择与“名称”在同一组中的用户
问题描述
Users
id username
1 ryan
2 mike
3 annie
4 lisa
Groups
id name
1 football
2 hockey
Permissions
user_id group_id
1 1
1 2
2 1
4 2
所以我正在寻找每个用户名,他们至少属于一个用户名 ryan 的同一组。我也想认识不属于同一组的每个人。
SELECT Users.username
FROM Users
LEFT JOIN Permissions ON Users.id = Permissions.user_id
LEFT JOIN Groups.id = Permissions.group_id
WHERE Users.id;
所以这就是我开始的方式,但不知道如何继续。
解决方案
您可以通过用户和权限的多个连接来做到这一点:
select uu.username
from Users u
inner join Permissions p on p.user_id = u.id
inner join Permissions pp on pp.group_id = p.group_id
inner join Users uu on pp.user_id = uu.id and pp.user_id <> u.id
where u.username = 'ryan'
请参阅演示。
结果:
| username |
| -------- |
| mike |
| lisa |
推荐阅读
- design-patterns - 与许多提供相同功能的库集成的设计模式
- python - 标签数量不匹配?
- python - 如何在Ddjango中将查询集作为单个项目传递?
- splunk - 如何编写 splunk 查询以确保搜索正常工作?
- sql-server - 查询从 Table2 中获取 Supervisor,同时显示 Table1 中的信息
- javascript - JS 事件在 woocommerce 购物车页面上无法正常工作
- flutter - 如何在没有 MaterialPageRoute 的情况下传递参数函数 setState?
- java - Mockito、verify 和 HashMap:参数不同
- mysql - 试图重新排列mysql中的数据
- ms-access - 格式化 MS-Access 图表中的轴标签