mysql - 选择城市最低价格的房间

标签 mysql group-by

我有 3 个表房间,酒店,城市,我如何选择一个价格最低的房间及其每个城市的 hotel_id

price | hotel_id | city_id
10    | 1        | 1
13    | 4        | 2
44    | 7        | 3 
...

SELECT MIN(price) price, hotel_id, city_id FROM (
 SELECT MIN(room_price1) price, hotel_id, city_id 
    FROM Hotel 
    JOIN  Room USING(hotel_id)
        JOIN City USING(city_id)
    LEFT JOIN Service_hotel_option USING (hotel_id)
    WHERE room_price1 > 0
        GROUP BY hotel_id
    ORDER BY price ASC) t 
GROUP BY city_id
ORDER by city_name, price

但我不确定。

最佳答案

怎么样:

SELECT price, hotel_id, city_id
FROM hotel
INNER JOIN room AS r1 USING (hotel_id)
WHERE NOT EXISTS (SELECT 1 FROM room AS r2
    WHERE r2.hotel_id = r1.hotel_id AND r2.price < r1.price)

如果找不到价格更低的房间,这只会从 hotel INNER JOIN room 中选择行。

关于mysql - 选择城市最低价格的房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650241/

相关文章:

php - 带有红色错误消息的表单验证不起作用(php、ajax、jquery 和 mysql)

r - 基于 2 个其他列查找一列的平均值 RStudio

没有分组依据的 SQL Max(date)

mysql - 获取表中所有电子邮件地址的所有 IP 地址

mysql count group by order by optimization

php - 将电子邮件地址输入 MYSQL 数据库

php - mysql加入组循环困惑

MySQL 搜索并替换不属于其一部分的整个字段

mysql - 处理 ON INSERT 触发器时如何锁定 innodb 表?

MySQL Group By 未列出所有组项