繁体   English   中英

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]

所以我有一张这样的桌子,一直在想办法找到 SELECT 所有hotelNo 的方法,即有 > 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 秒)

我想要一个 output 显示哪个hotelNo 有两个以上的双人间。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM