基本上我想做的是查询,其中有一个带有文章的表。 它是一个包含Title,body,PublishedDate和AuthorID的简单表。 现在我想要查询的是。按PublishedDate对文章进行排序,并在此处获取作者的最新文章。
我还想添加功能,例如我想为每个作者显示最新的两篇文章。但首先,它需要考虑公布的日期,而不是我想要显示多少作者。
SELECT
article_page.AuthorId,
SUBSTRING_INDEX(GROUP_CONCAT(article_page.ID ORDER BY article_page.PublishedDate DESC
), ',', 3) AS latest_articles
FROM ArticlePage AS article_page
GROUP BY article_page.AuthorId
LIMIT 2;
以下查询是我到目前为止所做的事情,但事情是如果它将其限制为两位作者,但最后一位作者有最新发布的日期,它没有显示。
有没有办法实现这一目标?
答案 0 :(得分:3)
我认为你只需要一个order by
:
SELECT ap.AuthorId,
SUBSTRING_INDEX(GROUP_CONCAT(ap.ID ORDER BY ap.PublishedDate DESC
), ',', 3) AS latest_articles
FROM ArticlePage ap
GROUP BY ap.AuthorId
ORDER BY MAX(ap.PublishedDate) DESC
LIMIT 2;
请注意表别名的使用。这些使查询更容易编写和阅读。