mysql - GROUP BY 得到前两行

标签 mysql sql subquery

所以我有以下查询,它按照我的预期执行。它从每个作者那里获取最新发表的文章。但是现在我想让它从每个作者那里得到最新的两篇文章。我该怎么做?

SELECT author_article.ID
FROM (
       SELECT
         sorted_articles.ID,
         sorted_articles.AuthorID,
         sorted_articles.PublishedDate
       FROM ArticlePage sorted_articles
       ORDER BY PublishedDate DESC
     ) author_article
GROUP BY author_article.AuthorID
ORDER BY author_article.PublishedDate DESC;

enter image description here

所以我需要的是每个作者的最新 2 篇文章。

最佳答案

使用相关子查询来计算同一作者最近发表的所有文章。如果有 1 篇或更少的最新文章,则返回该行。

SELECT *
FROM ArticlePage t1
WHERE (select count(*) from ArticlePage t2
       where t2.AuthorID = t1.AuthorID
         and t2.PublishedDate > t1.PublishedDate) <= 1

关于mysql - GROUP BY 得到前两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139055/

相关文章:

mysql - 分组时对 JOIN 结果进行排序

mysql - 如何创建将删除移动到另一个表的触发器?

mysql - 如何从三个表中提取查询

MySQL WHERE 子句在 SELECT MIN() 子查询中被忽略

mysql - JOIN 查询的奇怪行为

mysql - 不是模型中的选择器,Rails

mysql - 共享Host/MySQl应用能否支持500个用户同时访问站点的负载

mysql - 从每小时总和中获取最大用户分数

mysql传递数据到in

MySQL 加入前一条出现的记录