Anda dapat menggunakan kueri peringkat mysql tidak memiliki fungsi jendela untuk jenis hasil ini untuk mendapatkan n catatan per grup, saya tidak akan menyarankan group_concat
solusi karena sebagai articles
istilah mengatakan bahwa mungkin ada data yang cukup dan dengan mudah melewati batasan batas 1024 karakter jika Anda meningkatkan batas ini juga memiliki ketergantungan pada max_allowed_packet
juga
SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
FROM category c
JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
WHERE rownum <= 5
Di atas akan memberi peringkat setiap artikel di dalam grup kategorinya, Anda dapat melihat hasil rownum
alias dan di outer query cukup filter hasil artikel menjadi 5 per grup kategori