我有 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/