【发布时间】:2016-03-18 04:16:57
【问题描述】:
我有所有的酒店和房间价格,在这些数据中,我需要获取酒店数据中价格最低的房间,下面是我的查询它没有选择最低价格的例子 hotelname3, room2, 5。
SELECT *
FROM (hoteldata)
GROUP BY hotelname
ORDER BY price ASC
【问题讨论】:
我有所有的酒店和房间价格,在这些数据中,我需要获取酒店数据中价格最低的房间,下面是我的查询它没有选择最低价格的例子 hotelname3, room2, 5。
SELECT *
FROM (hoteldata)
GROUP BY hotelname
ORDER BY price ASC
【问题讨论】:
试试这个:
SELECT * FROM hoteldata where price = (SELECT min(price) FROM hoteldata)
【讨论】:
SELECT hd.*
FROM (
SELECT hotelname , MIN(price) as minprice
FROM hoteldata
GROUP BY hotelname
) minprices
JOIN hoteldata hd
ON hd.hotelname = minprices.hotelname
AND hd.price = minprices.minprice
注意:如果同一家酒店的两间客房价格最低,则两者都会列出。
为了性能,您应该在 (hotelname, price) 上定义一个索引
【讨论】:
SELECT *
FROM (hoteldata) order by price asc limit 1;
这将适用于从不同酒店获得最低价格的房间。
【讨论】: