MySQL选择MAX唯一值

时间:2013-02-17 17:17:29

标签: mysql sql distinct max

我有一个mysql表,显示卖家表,如下所示:

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正在销售巧克力(产品ID 1),用于4KG的@£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);

任何人都知道如何实现我的预期输出?

1 个答案:

答案 0 :(得分:0)

您可以使用过滤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