Mysql 选择城市最低价格的房间

Mysql 选择城市最低价格的房间,mysql,group-by,Mysql,Group By,我有3个桌子房间,酒店,城市,我如何选择一个最低价格的房间和每个城市的酒店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 Hote

我有3个桌子房间,酒店,城市,我如何选择一个最低价格的房间和每个城市的酒店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)
如果找不到价格更低的房间,这将仅从酒店内部连接房间中选择行。

如何:

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 Internal JOIN room中选择行。

我在此对架构进行了一些推断,因此您可能需要调整检查房间是否位于同一家酒店的方式,或者调整提取房间价格的位置。重要的是哪里没有更便宜的房间我需要一个城市的房间。此查询返回每个酒店的最低房价?非城市此查询与选择MINprice、hotel_id、city_id相同,可从hotel JOIN Room使用hotel_id组按hotel_id选择MINprice、hotel_id、city_id也可加入城市。正如我所说,无论你最终选择的是什么,都不存在符合你所寻找的较低价格的定义。如果酒店记录中两个房间的房价是重复的,这是真的,如果有两个相同的价格,你需要定义一个可选的选择标准,即使它与具有较低ID的价格一样任意。这将是一个类似“r2.price