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
所以我有一个像这样的 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