【问题标题】:MySQL Grouping by ID and Ordering by MIN(price)MySQL 按 ID 分组和按 MIN 排序(价格)
【发布时间】:2014-02-17 13:18:51
【问题描述】:

好的,所以我有以下 MySQL 语句...

目标是按“id”代码对“库存”所有产品进行分组,并显示具有“最低价格”的产品。

我曾认为单独按 id 分组并在 ORDER BY 子句中添加 MIN(price) 可以完成这项工作,但显然不是......

SELECT *  
FROM (`products`)  
WHERE `in_stock` = 'yes'  
GROUP BY `id`  
ORDER BY brand, line, product, size, unit, MIN(price)  
LIMIT 25

有人可以帮忙吗?

样本数据:

id  brand   line        product size    unit    price   url
123 Adidas  Deep Energy EDT 50  ml  10.00   Link1
123 Adidas  Deep Energy EDT 50  ml  8.75    Link2
123 Adidas  Deep Energy EDT 50  ml  9.99    Link3
124 Adidas  Deep Energy EDT 100 ml  15.00   Link4

因此,实际上我尝试组合的查询将返回上述示例数据的第 2 行和第 4 行(“123”和“124”的最低定价行)

【问题讨论】:

  • 为了更清楚地了解您的问题,查看一些示例数据和您的预期结果可能会有所帮助。
  • 抱歉,是的 - 已编辑 @eggyal

标签: php mysql group-by sql-order-by min


【解决方案1】:

您计算最低价格为:

SELECT id, MIN(price)   
FROM products
WHERE in_stock = 'yes'  
GROUP BY id ; 

要获得最低价格的行,您需要重新加入:

select p.*
from products p join
     (SELECT id, MIN(price) as minprice  
      FROM products
      WHERE in_stock = 'yes'  
      GROUP BY id 
     ) pmin
     on p.id = pmin.id and p.price = pmin.minprice;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2020-02-15
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多