Как получить товары в порядке с лимитом в MySQL
У меня есть стол Item ( id, itemType)
, itemType
может быть от 1-5.
Я хочу получить 2 элемента каждого типа, используя mysql.
Я старался
select * from `item` ORDER BY `itemType` limit 2
что дает мне 2 заказа по типу, но я хочу 2 элемента каждого типа.
1 ответ
Решение
Вы можете использовать приведенный ниже запрос, даже если я не проверял его с данными, поскольку у меня нет примеров данных, поэтому, если у вас возникнут проблемы, вы можете создать sqlfiddle, чтобы я мог настроить запрос в соответствии с вами в #sql
SELECT x.id,x.type1 as 'Type'
FROM (SELECT t.*,
CASE
WHEN @type != t.type THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@type := t.type AS 'type1'
FROM item t
JOIN (SELECT @rownum := NULL, @type := '') r
ORDER BY t.type,t.id) X
WHERE x.rank<=2;
Даже вы можете сделать заказ на основе максимальной цены или любого другого поля.