Denne type resultater håndteres bedst af vinduesfunktioner i andre RDBMS, men desværre har Mysql ingen vinduesfunktioner, så alternativt er der en løsning til at bruge brugerdefinerede variabler til at tildele en rang for rækker, der tilhører samme gruppe
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
Ovenstående forespørgsel vil give dig 2 seneste poster (på grundlag af id) pr. kategori, du kan ændre den sidste del af forespørgslen med where-klausul til et hvilket som helst tal for at vise n resultater pr. gruppe, for eksempel for at vise 3 poster derefter WHERE c.rownum <= 3
og så videre