该查询应该如何编写?

时间:2015-08-21 13:35:36

标签: mysql sql

基本上我想做的是查询,其中有一个带有文章的表。 它是一个包含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;

以下查询是我到目前为止所做的事情,但事情是如果它将其限制为两位作者,但最后一位作者有最新发布的日期,它没有显示。

有没有办法实现这一目标?

1 个答案:

答案 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;

请注意表别名的使用。这些使查询更容易编写和阅读。