如何使用SQL获得评论最多的文章?

时间:2018-08-27 23:27:23

标签: php mysql sql database

我们有2个表:articlescomments。 该表的结构:

articles(article_id(PK), etc);

comments(comment_id(PK), article_id(FK)).

我需要获取评论最多的文章列表。 我使用了请求:

SELECT articles.article_id, COUNT(comments.article_id) 
FROM comments
INNER JOIN articles ON comments.article_id = articles.article_id AND comments.article_id = :article_id.

要获取包含3条评论最多的文章的数据数组的请求是什么? 使用SQL真的可以做到这一点吗?

4 个答案:

答案 0 :(得分:1)

通过该查询,您应该能够得到想要的:

SELECT articles.article_id, COUNT(comments.article_id) AS num_comments
FROM comments
INNER JOIN articles ON comments.article_id = articles.article_id
GROUP BY articles.article_id
ORDER BY num_comments DESC
LIMIT 3

答案 1 :(得分:1)

如果您只需要商品编号,则不需要join

SELECT c.article_id, COUNT(*) AS num_comments
FROM comments c
GROUP BY c.article_id
ORDER BY num_comments DESC
LIMIT 3

答案 2 :(得分:0)

下面的查询将为您提供文章列表和每篇文章的评论数,并按number_of_comments个降序对其进行排序

SELECT articles.article_id, COUNT(comments.article_id) AS comment_count
FROM articles, comments
WHERE articles.article_id=comments.article_id
GROUP BY articles.article_id
ORDER BY comment_count DESC

答案 3 :(得分:0)

有一种更简单的方法,您可以在商品表上添加'n-comments'列并将其初始化为零,然后使用您的函数提交评论,更新“每条评论后都会添加n-comments ++”。

每篇文章都应包含评论的数量,通过以下方式选择评论最多的文章将非常容易: “从文章ORDER BY n条评论DESC LIMIT 50中选择SELECT article_id”

我认为它将变得更容易,更快,希望能对您有所帮助