包含列两次(或更多)的SQL行

时间:2014-12-18 20:57:58

标签: mysql sql database phpmyadmin

使用 PhpMyAdmin ,我正在尝试检索具有一组给定设施的全部的房间列表。我可以查询一张有我想要的设施的房间表,但我不知道如何过滤出每个设施出现的房间。

以下是我的询问:

SELECT distinct * FROM `Facilities` WHERE `Facility` = 'DVD Player' UNION
SELECT distinct * from `Facilities` WHERE `Facility` = 'Computer';

当我使用Group By 'Room' Having Count(Distinct 'Room') = 2时,我会使用此订单获得正确的表格,但如果我选择Computer然后将其合并并选择DVD Player,我不会< / strong>获取正确的表格。

我在任何分组之前的初始查询都显示了这一点:

Room    | Facility
A.0.0.1   Computer
G.0.02    Computer
HH.0.23   Computer
G.0.02    DVD Player
HH.0.23   DVD Player

我希望房间里有电脑和DVD播放器。我的表中有22个设施,我可能希望能够查询它们的任意组合以找到匹配的房间。

1 个答案:

答案 0 :(得分:3)

如果您想要拥有特定设施的房间,请尝试以下方式:

select f.room
from facilities f
where f.facility in ('Computer', 'DVD Player')
group by f.room
having count(distinct f.facility) = 2;