Tento typ výsledků nejlépe zvládnou funkce okna v jiných RDBMS, ale bohužel Mysql nemá žádné funkce okna, takže alternativou je řešení použít uživatelem definované proměnné k přiřazení pořadí pro řádky, které patří do stejné skupiny
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
Výše uvedený dotaz vám poskytne 2 poslední záznamy (na základě id) na kategorii, můžete změnit poslední část dotazu s klauzulí where na libovolné číslo, aby se zobrazilo n výsledků na skupinu, například pro zobrazení 3 záznamů, pak WHERE c.rownum <= 3
a tak dále