Если у продуктов есть уникальный идентификатор, вы можете попробовать это:
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: Я думаю, это все ещеневерно, если в подкатегории больше одного товара с минимальной ценой.