我们有2个表: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真的可以做到这一点吗?
答案 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”
我认为它将变得更容易,更快,希望能对您有所帮助