MySQL - 限制组别

时间:2011-02-02 09:26:48

标签: sql mysql group-by

想象一下,你有一张产品表。每种产品都有价格,属于特定类别。此外,每个产品也属于子类别。现在,如果您想为每个子类别找到最便宜的产品怎么办?这很简单:

SELECT MIN(price), sub_category FROM products GROUP BY sub_category

右?

现在,假设您只想为上述结果为每个类别(不是子类别)显示最多2个产品。有没有办法在SQL中实现它?

2 个答案:

答案 0 :(得分:1)

假设产品具有唯一ID,您可以尝试:

select * from products p
where p.id in (select p1.id from products p1 
    where p.category = p1.category order by price limit 0,2)
and price = (select min(price) from products p2 
    where p2.sub_category = p.sub_category)
编辑:@wimvds:谢谢你指出错误。

编辑2:如果在子类别中有多个具有最低价格的产品,我想这仍然是错误的。

答案 1 :(得分:0)

不应该是这样的:

select * from products p, products p1 where p.id in (select min(price) from products p2      where p2.sub_category = p2.sub_category) and p1.category=p.category order by p.price limit 0,2