sql—如何选择列的值,仅当具有相同值的所有其他条目存在并匹配时(mysql数据库)

fhg3lkii  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(228)

标题有点混乱,但下面是一个示例,假设我们有一个表:

| name   | room |  
=================
| John   | 4    |  
| John   | 6    |    
| John   | 9    |  
| Smith  | 4    |  
| Smith  | 6    |  
| Brian  | 4    |  
| Brian  | 6    |  
| Brian  | 9    |

我想选约翰和布赖恩,因为他们都有4、6和9号房间,但史密斯没有,因为他没有9号房间(如果我们有另外一个人只有4号和6号房间,那么它会选择那个人以及史密斯)。
我知道我需要做一些相关的查询,但我不知道如何让它做类似的事情

for a check for b
zdwk9cvp

zdwk9cvp1#

如果你想要一组名字共享同一个房间,我建议你 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 .

相关问题