SQL:如何 select 具有至少 2 个特定值的另一列的所有列? [使用 mariadb]

SQL: How do I select all of a column that have at least 2 of another column of a specific value? [using mariadb]

所以我有一个像这样的 table,并且一直在努力寻找一种方法来 SELECT 所有拥有 > 1 type='double' 房间的酒店。一直没能找到帮助的方法。

MariaDB [hotel]> SELECT * FROM room;

+--------+---------+--------+-------+
| roomNo | hotelNo | type   | price |
+--------+---------+--------+-------+
|      1 |       1 | single |    80 |
|      1 |       2 | single |    90 |
|      1 |       3 | single |    80 |
|      1 |       4 | single |    80 |
|      1 |       5 | single |    80 |
|      1 |       6 | double |   100 |
|      1 |       7 | single |    80 |
|      2 |       1 | single |    80 |
|      2 |       2 | single |    80 |
|      2 |       3 | single |    80 |
|      2 |       4 | single |    80 |
|      2 |       5 | single |    80 |
|      2 |       6 | single |    80 |
|      2 |       7 | single |    80 |
|      3 |       1 | double |    95 |
|      3 |       2 | double |   100 |
|      3 |       3 | double |    95 |
|      3 |       4 | double |    95 |
|      3 |       5 | double |    95 |
|      3 |       7 | double |    95 |
|      4 |       1 | vip    |   120 |
|      4 |       2 | vip    |   120 |
|      4 |       3 | vip    |   120 |
|      4 |       4 | vip    |   120 |
|      4 |       5 | double |   100 |
|      5 |       1 | single |    85 |
|      5 |       2 | other  |   120 |
|      5 |       3 | other  |   110 |
|      5 |       4 | double |    95 |
|      5 |       5 | double |   100 |
+--------+---------+--------+-------+

一组 30 行(0.001 秒)

我有:

MariaDB [hotel]> SELECT hotelNo, type, COUNT(*) FROM room GROUP BY type HAVING COUNT(*) > 2;

但这只是给我每种房型的总数:

+---------+--------+----------+
| hotelNo | type   | COUNT(*) |
+---------+--------+----------+
|       1 | single |       14 |
|       6 | double |       10 |
|       1 | vip    |        4 |
+---------+--------+----------+

一组 3 行(0.001 秒)

我想得到一个输出,显示哪些酒店拥有超过两个双人间。

您想要拥有 1 个以上双人房的酒店。我建议过滤 type = 'double',按 hotelno 聚合,并使用 having 子句以确保组中有多个记录:

select hotelno
from room
where type = 'double'
group by hotelno
having count(*) > 1