Bạn có thể sử dụng truy vấn xếp hạng mysql không có hàm cửa sổ cho loại kết quả này để nhận n bản ghi cho mỗi nhóm, tôi sẽ không đề xuất group_concat
giải pháp vì là articles
điều khoản nói rằng có thể có đủ dữ liệu và dễ dàng vượt qua giới hạn 1024 ký tự nếu bạn tăng giới hạn này, nó cũng phụ thuộc vào max_allowed_packet
quá
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
Ở trên sẽ xếp hạng từng bài viết trong nhóm danh mục của nó, bạn có thể xem kết quả của rownum
bí danh và trong truy vấn bên ngoài, chỉ cần lọc kết quả của các bài báo thành 5 cho mỗi nhóm danh mục