Jenis hasil ini paling baik ditangani oleh fungsi jendela di RDBMS lain tetapi sayangnya Mysql tidak memiliki fungsi jendela jadi sebagai alternatif ada solusi untuk menggunakan variabel yang ditentukan pengguna untuk menetapkan peringkat untuk baris yang termasuk dalam grup yang sama
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
Kueri di atas akan memberi Anda 2 catatan terbaru (berdasarkan id) per kategori Anda dapat mengubah bagian terakhir dari kueri dengan klausa where ke nomor apa pun untuk menampilkan n hasil per grup misalnya untuk menampilkan 3 catatan lalu WHERE c.rownum <= 3
dan seterusnya