【问题标题】:Group by pick row with lowest value (price)按具有最低值(价格)的选择行分组
【发布时间】:2016-03-18 04:16:57
【问题描述】:

我有所有的酒店和房间价格,在这些数据中,我需要获取酒店数据中价格最低的房间,下面是我的查询它没有选择最低价格的例子 hotelname3, room2, 5。

SELECT *
FROM (hoteldata)
GROUP BY hotelname
ORDER BY price ASC

【问题讨论】:

标签: mysql group-by min


【解决方案1】:

试试这个:

SELECT * FROM hoteldata where price = (SELECT min(price) FROM hoteldata)

【讨论】:

    【解决方案2】:
    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) 上定义一个索引

    http://sqlfiddle.com/#!9/10f00/1

    【讨论】:

      【解决方案3】:
      SELECT *
      FROM (hoteldata) order by price asc limit 1;
      

      这将适用于从不同酒店获得最低价格的房间。

      【讨论】:

        猜你喜欢
        • 2018-04-26
        • 2018-03-16
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 2021-04-26
        • 2020-07-11
        相关资源
        最近更新 更多