在 MySQL 中我有文章。每篇文章都有类别。我想获取按日期排序的每个类别的最后 N 篇文章。如何在 SQL 中做到这一点?也对如何将其转换为 Yii2 Active Query 感兴趣。
示例:10 篇文章,3 个类别。类别 A
有 2 篇文章,类别 B
有 3 篇文章,类别 C
有 5 篇文章。
像这样的查询
SELECT *
FROM articles
GROUP BY 'category'
LIMIT 2
ORDER BY 'date'
我必须从 A
中获取 2 篇文章,从 B
中获取最后 2 篇文章,从 C
中获取最后 2 篇文章
最佳答案
一种方法是:
select a.*
from articles a
where a.ctime >= coalesce((select a2.ctime
from articles a2
where a2.category = a.category
order by a2.ctime desc
limit 1, 1
), a.ctime
);
MysQL 不允许 in
带有 limit
的相关子查询。不知道为什么,但它确实适用于比较运算符。
关于mysql - 如何对一个字段的 GROUP BY 和 LIMIT N 结果进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790326/