Dit soort resultaten kan het beste worden afgehandeld door vensterfuncties in andere RDBMS, maar helaas heeft Mysql geen vensterfuncties, dus als alternatief is er een oplossing om door de gebruiker gedefinieerde variabelen te gebruiken om een rangorde toe te kennen aan rijen die tot dezelfde groep behoren
SELECT `id`, `category`, `names`
FROM (
SELECT *,
@r:= CASE WHEN @g = category THEN @r + 1 ELSE 1 END rownum,
@g:=category
FROM test
CROSS JOIN(SELECT @g:=NULL ,@r:=0) t
ORDER BY category,id desc
) c
WHERE c.rownum <=2
Bovenstaande query geeft u 2 recente records (op basis van id) per categorie. U kunt het laatste deel van de query wijzigen met de where-clausule in een willekeurig getal om n resultaten per groep te tonen, bijvoorbeeld om 3 records weer te geven en vervolgens WHERE c.rownum <= 3
enzovoort