0

我有一个 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 正在销售巧克力(产品 id 1),价格为 4KG's@ £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);

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

4

1 回答 1

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
于 2013-02-17T17:24:03.973 回答