【发布时间】:2016-02-18 02:37:11
【问题描述】:
这是我正在使用的当前 SQL 查询:
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
来自这个数据集:
Product Name Price
11 Merch1 19.00
11 Merch2 20.00
11 Merch3 19.00
11 Merch4 19.50
12 Merch1 20.00
12 Merch2 20.00
13 Merch1 17.00
13 Merch3 15.00
当前SQL在价格相同时输出多条产品记录如下:
Product Name Price
11 Merch1 19.00
11 Merch3 19.00
12 Merch1 20.00
12 Merch2 20.00
13 Merch3 15.00
我想按产品分组并显示最低价格和相应的行数据。如果一个产品的两个价格相同,则使用找到的第一个记录。
试图得到这个结果:
Product Name Price
11 Merch1 19.00
12 Merch1 20.00
13 Merch3 15.00
【问题讨论】:
-
完全消除连接。
select merchant.*, min(price) ... group product。您最终会得到 mysql 首先遇到的任何商家,但每个产品 id 只会获得一个最低价格记录。 -
更新了原始问题以更好地描述我想要实现的目标。