2014-01-26 37 views
0

好了,我有以下MySQL的声明...MySQL的分组由ID和排序方式MIN(价格)

的目标是集团“股票”的所有产品通过自己的“身份证”代码,并显示一个以“最低价格”。

我原以为单独的ID分组,并在ORDER BY子句将做的工作加上MIN(价格),但显然不是...

SELECT * 
FROM (`products`) 
WHERE `in_stock` = 'yes' 
GROUP BY `id` 
ORDER BY brand, line, product, size, unit, MIN(price) 
LIMIT 25 

有人能帮忙吗?

的样本数据:

id brand line  product size unit price url 
123 Adidas Deep Energy EDT 50 ml 10.00 Link1 
123 Adidas Deep Energy EDT 50 ml 8.75 Link2 
123 Adidas Deep Energy EDT 50 ml 9.99 Link3 
124 Adidas Deep Energy EDT 100 ml 15.00 Link4 

因此,有效地查询我想放在一起将返回上述样本数据的行2和4(最低售价为行“123”和“124”)

+0

要更清楚地了解您的问题,可能有助于查看一些示例数据和预期结果。 – eggyal

+0

对不起,是的 - 编辑@eggyal – user2505513

回答

0

你计算出的最低价格为:

SELECT id, MIN(price) 
FROM products 
WHERE in_stock = 'yes' 
GROUP BY id ; 

要获得最低的价格表中的行,你需要加入,早在:

select p.* 
from products p join 
    (SELECT id, MIN(price) as minprice 
     FROM products 
     WHERE in_stock = 'yes' 
     GROUP BY id 
    ) pmin 
    on p.id = pmin.id and p.price = pmin.minprice;