如何从列表中选择包含所有项目的房间列表?

时间:2019-01-19 20:26:08

标签: sql select

我有一个表items_in_room,该表链接哪个项目位于哪个房间(列为room_iditem_id)。有没有办法从列表中选择包含所有项目的所有房间?

我知道选择包含ID为x的一项的房间为:

select room_id 
  from items_in_room
 where item_id = x

例如,如果我们需要包含ID为x,y,z的项目的房间,是否可以编写选择查询?

2 个答案:

答案 0 :(得分:0)

如果有列表,则可以执行以下操作:

select room_id
from items_in_room
where item_id in ( . . . )  -- list of items here
group by room_id
having count(*) = <n>;  -- number of items in list

这假设items_in_room没有重复项。如果是这样,请对count(distinct)子句使用having

having count(distinct item_id) = <n>

答案 1 :(得分:0)

只需将in运算符用作

select room_id 
  from items_in_room
 where item_id in (x,y,z)