标题有点乱,但这是一个例子 假设我们有表:
| name | room |
=================
| John | 4 |
| John | 6 |
| John | 9 |
| Smith | 4 |
| Smith | 6 |
| Brian | 4 |
| Brian | 6 |
| Brian | 9 |
我要选择John和Brian,因为他们都恰好有房间4、6和9,但没有Smith,因为他没有房间9。(如果我们只有另一个人,只有房间4和6,然后选择该人以及史密斯)。
我知道我需要进行某种相关查询,但是我不确定如何真正使它执行类似的操作
for a check for b
答案 0 :(得分:3)
如果您要使用完全相同的房间名称组,我建议group_concat()
:
select rooms, group_concat(name) as names
from (select name, group_concat(room order by room) as rooms
from t
group by name
) n
group by rooms;
如果您只希望使用多个名称的组合,请在外部having count(*) > 1
上加上select
。