MySQL - группировка строк в 4-х - PullRequest
1 голос
/ 27 июля 2010

У меня есть таблица продуктов, подобная этой:

Product name , Affiliate ID , ProductCode
a, 1, 1
b, 1, 2
c, 1, 3
d, 1, 5
e, 1, 7
f, 2, 4
g, 2, 6

Я хочу вернуть первые четыре продукта с каждого идентификатора партнера.Столбец ProductCode указывает порядок, в котором были добавлены продукты, поэтому я могу использовать этот столбец для сортировки результатов.Но я не знаю, как вернуть первые четыре результата с каждого идентификатора партнера?Если я использую функцию 'group', она возвращает только одну строку каждого идентификатора партнера.

1 Ответ

1 голос
/ 27 июля 2010

Посмотрите на пример по этой ссылке:

Квоты внутри группы (наибольшее N на группу)

это именно то, что вам нужно.

 SELECT AffiliateId, ProductCode 
 FROM ( 
    SELECT 
      AffiliateId, ProductCode, 
      IF( @prev <> ID  @rownum := 1, @rownum := @rownum+1 ) AS rank, 
      @prev := ID 
    FROM your table 
 JOIN (SELECT @rownum := NULL, @prev := 0) AS r 
 ORDER BY AffiliateId, ProductCode 
 ) AS tmp 
 WHERE tmp.rank <= 4
 ORDER BY AffiliateId, ProductCode; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...