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

gmxoilav  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(362)

我们有两张table: articles , comments . 此表的结构:

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真的可以做到这一点吗?

rmbxnbpk

rmbxnbpk1#

下面的查询将为您提供一个文章列表和每个文章的评论数量,按评论数量的降序排列

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
pnwntuvh

pnwntuvh2#

有一种更简单的方法,您可以在article表中添加'n-comments'列并将其初始化为零,然后使用提交注解的函数,在每个注解之后更新'n-comments++'的值。
瘦每一篇文章将包含其评论的数量,这将是非常容易选择评论最多的文章:“选择文章\u id从文章顺序n评论desc限制50”
我想会更简单更快,希望能有所帮助

ctehm74n

ctehm74n3#

如果你只需要文章id,那么 join 不需要:

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

2ekbmq324#

您应该能够通过此查询获得所需内容:

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

相关问题