仅当所有其他具有相同值的条目都存在并且匹配时,才如何选择列的值? (MYSQL)

时间:2018-08-02 23:30:39

标签: mysql sql

标题有点乱,但这是一个例子 假设我们有表:

| 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

1 个答案:

答案 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