选择公共交互mysql
我有三张桌子:选择公共交互mysql,mysql,sql,Mysql,Sql,我有三张桌子: [user] id | name | level 10 | John | 1 11 | Josh | 2 12 | Mary | 3 我想要的是选择可以与房间交互的楼层 如果我检查房间1,答案应该是级别1和2(因为John是级别1,他只能与级别2互动),即使Josh作为级别2可以与级别3互动 如果我查看房间3,因为只有Josh在那里,答案应该是12和3 如果我选择房间2,答案应该是级别2和级别3 基本上我想要的是一种为房间里的成员选择公共交互级别的方法
[user]
id | name | level
10 | John | 1
11 | Josh | 2
12 | Mary | 3
我想要的是选择可以与房间交互的楼层
- 如果我检查房间1,答案应该是级别1和2(因为John是级别1,他只能与级别2互动),即使Josh作为级别2可以与级别3互动
- 如果我查看房间3,因为只有Josh在那里,答案应该是12和3
- 如果我选择房间2,答案应该是级别2和级别3
检查以下表格/数据集:您没有提到您正在使用的MySQL版本,因此我假设它是一个现代版本。在MySQL 8.x中,您可以使用CTE 例如:
with
x as (
select u.name, i.interact_with as level
from room r
join user u on u.id = r.user_id
join level_interation i on i.level = u.level
where r.room_id = 1 -- this is the starting room
)
select level
from x
group by level
having count(distinct name) = (
select count(distinct name) from x
)
您没有提到您使用的MySQL版本,所以我假设它是一个现代版本。在MySQL 8.x中,您可以使用CTE 例如:
with
x as (
select u.name, i.interact_with as level
from room r
join user u on u.id = r.user_id
join level_interation i on i.level = u.level
where r.room_id = 1 -- this is the starting room
)
select level
from x
group by level
having count(distinct name) = (
select count(distinct name) from x
)
加入表格并按li分组。在
HAVING
子句中使用条件与交互:
select li.interact_with
from room r
inner join user u on u.id = r.user_id
inner join level_interaction li on li.level = u.level
where r.room_id = 1
group by li.interact_with
having count(*) = (select count(user_id) from room where room_id = 1);
请参阅。
结果(对于房间id=1
):
加入表格并按li分组。在HAVING
子句中使用条件与交互:
select li.interact_with
from room r
inner join user u on u.id = r.user_id
inner join level_interaction li on li.level = u.level
where r.room_id = 1
group by li.interact_with
having count(*) = (select count(user_id) from room where room_id = 1);
请参阅。
结果(对于房间id=1
):
如果你从1号房间开始,那么3号房间应该包括在内,因为乔希可以和3号房间互动,但你说不应该。你能详细说明一下吗?嗨,1号房间的主人,如果玛丽(3级)加入,约翰将无法与她互动。基本上,房间里的每个人都应该能够相互交流。这有意义吗?感谢您添加到问题中的表/数据集在结构上与此处的解释有相当大的差异。它现在应该更新,与问题上的名称完全匹配。谢谢,到目前为止你都试了些什么?你被困在哪里?如果你从1号房间开始,那么3号房间应该包括在内,因为乔希可以和3号房间互动,但你说不应该。你能详细说明一下吗?嗨,1号房间的主人,如果玛丽(3级)加入,约翰将无法与她互动。基本上,房间里的每个人都应该能够相互交流。这有意义吗?感谢您添加到问题中的表/数据集在结构上与此处的解释有相当大的差异。它现在应该更新,与问题上的名称完全匹配。谢谢,到目前为止你都试了些什么?你被困在哪里了?你能在mysql 5上做到吗?非常感谢。你能在mysql 5上完成吗?非常感谢。谢谢!成功了!现在我将试着理解逻辑:)谢谢!谢谢!成功了!现在我将试着理解逻辑:)谢谢!
> | interact_with |
> | ------------: |
> | 1 |
> | 2 |