U kunt een rangquery gebruiken. mysql heeft geen vensterfuncties voor dit type resultaten om n records per groep te krijgen, ik zal geen group_concat
voorstellen oplossing omdat als articles
termen zegt dat er voldoende gegevens kunnen zijn en gemakkelijk de limiet van 1024 tekens omzeilen als je deze limiet verhoogt, is het ook afhankelijk van max_allowed_packet
ook
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
Hierboven rangschikt elk artikel in zijn categoriegroep, u kunt het resultaat van rownum
zien alias en in de buitenste zoekopdracht filtert u gewoon de resultaten van artikelen tot 5 per categoriegroep