繁体   English   中英

MySQL选择MAX唯一值

[英]MySQL selecting MAX unique values

我有一个mysql表,其中显示了类似于以下内容的Sellers表:

advertiseid[pk] | customerid[fk] | productsid[fk] | quantites_advertised | price_advertised
------------------------------------------------------------------------------------------
      1               2                2                4.00                 2.00 
      2               4                3                5.00                 2.50
      3               3                2                1.00                 1.00

第一条记录表示..这表示客户ID 2以4公斤的商品价格售出巧克力(产品ID为1)@ 2.00英镑

我想选择每个产品ID,以便查询显示不同产品的最小值:因此,该表将是:

advertiseid[pk] | customerid[fk] | productsid[fk] | quantites_advertised | price_advertised
    ------------------------------------------------------------------------------------------
          2               4                3                5.00                 2.50
          3               3                2                1.00                 1.00

该查询输出产品2和3的最低价格,因为产品3是唯一价格最低的产品,而产品2的最低价格在4.00和1.00之间为1.00,因此将其输出。 说我有各种不同的产品,我将如何实现这样的目标? 我已经尝试过此查询,但它是不正确的:

select c.Fname p.ProductName, s.ProductID, s.Quantity, s.Price 
FROM sellers s, products p, customer c
WHERE s.Price = (select MIN(Price) FROM sellers WHERE 
p.ID=s.ProductID AND c.ID=s.cid);

有人知道我如何实现预期的输出吗?

您可以使用过滤inner join

select  *
from    YourTable yt
join    (
        select  productsid
        ,       min(price_advertised) as min_price_advertised
        from    YourTable
        group by
                productsid
        ) filter
on      filter.productsid = yt.productsid
        and filter.min_price_advertised = yt.price_advertised

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM