Kiểm tra điều này Bài viết về MySQL về cách làm việc với N thứ hàng đầu trong các nhóm phức tạp tùy ý; đó là một công cụ tốt. Bạn có thể thử cách này:
SET @counter = 0;
SET @category = '';
SELECT
*
FROM
(
SELECT
@counter := IF(posts.category = @category, @counter + 1, 0) AS counter,
@category := posts.category,
posts.*
FROM
(
SELECT
*
FROM test
ORDER BY category, date DESC
) posts
) posts
HAVING counter < 2