【问题标题】:Select lowest value within a table MySQL选择表 MySQL 中的最小值
【发布时间】:2015-07-28 14:19:23
【问题描述】:

我想从下表中的最低价格获得id_product_attribute

id_product | id_product_attribute  | price
210        | 131                   | 44.950000
210        | 132                   | 39.550000
210        | 134                   | 22.820000
210        | *135                  | 18.250000
211        | 137                   | 36.230000
211        | *138                  | 28.980000

我得到的最接近的是这个查询:

SELECT
    id_product,id_product_attribute,MIN(price) as price
FROM product_attribute 
WHERE price IN(
        SELECT MIN(price) 
        FROM product_attribute 
        GROUP BY id_product)
GROUP BY id_product

虽然是成功获得最低值(这里问过我的时间),但它不会返回正确的id_product_attribute。我在子查询中尝试了一些ORDER BY,但这对我也不起作用。

提前致谢!

【问题讨论】:

  • 您想以最低的价格从id_product 获得,不是吗?您的查询看起来像,但文本没有提及。
  • 是的,你是对的。那将是最佳的。但是,我现在所拥有的效果很好。如果您愿意分享,请在其中添加一些内容:)。

标签: mysql select group-by subquery


【解决方案1】:

您的子查询需要选择 min(price)AND id_product,并且由于这是两个字段,因此您必须连接派生表,因为您将无法使用 @ 987654321@不再匹配:

SELECT *
FROM product_attribute AS pa
LEFT JOIN (
    SELECT id_product, MIN(price) as price
    FROM product_attribute
    GROUP BY id_product
) AS minprices
   ON pa.id_product = minprices.id_product 
       AND pa.price = minprices.price

【讨论】:

  • 很好,因为你,我学到了新的 MySQL 技能。我让它按如下方式工作。 SELECT * FROM product_attribute AS pa LEFT JOIN ( SELECT id_product, MIN(price) as price FROM product_attribute GROUP BY id_product ) AS min_price ON pa.id_product = min_price.id_product AND pa.price = min_price.price
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 2011-06-24
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
相关资源
最近更新 更多