Как получить товары в порядке с лимитом в MySQL

У меня есть стол Item ( id, itemType), itemType может быть от 1-5.

Я хочу получить 2 элемента каждого типа, используя mysql.

Я старался

select * from `item` ORDER BY `itemType` limit 2 

что дает мне 2 заказа по типу, но я хочу 2 элемента каждого типа.

http://sqlfiddle.com/

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;

Даже вы можете сделать заказ на основе максимальной цены или любого другого поля.

Другие вопросы по тегам