我想从下表中的最低价格获取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,但这对我也不起作用。

提前致谢!

最佳答案

您的子查询需要选择min(price)和id_product,并且由于这是两个字段,因此您将不得不对派生表进行联接,因为您将无法再使用in()匹配项:

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 - 选择表MySQL中的最小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31679056/

10-14 00:14