mysql group by返回一个min值并获取相应的行数据

时间:2009-11-25 19:21:43

标签: sql mysql

我有一个像这样的数据表:

- PK_table - merchantName - price - Product
- 1        - argos        - 7     - 4
- 2        - comet        - 3     - 4
- 1        - Dixon        - 1     - 3
- 1        - argos        - 10    - 4

我希望在mysql中选择产品和相应商家的最低价格。

我试过了:

SELECT Product, merchantName, min(price)
FROM a_table
GROUP BY product

但是返回的结果不正确,因为它选择的是第一个商家名称,而不是MIN的相应商家。

你怎么做的?

1 个答案:

答案 0 :(得分:7)

SELECT Merchant.Product, Merchant.Name, Merchant.Price
FROM a_table AS Merchant
JOIN
(
SELECT Product, MIN(Price) AS MinPrice
FROM a_table
GROUP BY Product
) AS Price
ON Merchant.Product = Price.Product
AND Merchant.Price = Price.MinPrice

如果两个商家具有相同的低价格,则会返回两行。