4

因此,假设我想选择我所有博客文章的 ID,然后计算与该博客文章相关的评论数,我如何使用 GROUP BY 或 ORDER BY 以便返回的列表按每篇文章的评论数排序?

我有这个查询返回数据但不是按我想要的顺序?更改 group by 没有区别:

SELECT p.ID, count(c.comment_ID) 
FROM wp_posts p, wp_comments c 
WHERE p.ID = c.comment_post_ID 
GROUP BY c.comment_post_ID;
4

3 回答 3

4

我不熟悉 pre-SQL92 的语法,所以我会用我熟悉的方式来表达它:

SELECT c.comment_post_ID, COUNT(c.comment_ID)
FROM wp_comments c
GROUP BY c.comment_post_ID
ORDER BY COUNT(c.comment_ID) -- ASC or DESC

你用的是什么数据库引擎?至少在 SQL Server 中,除非您从帖子表中提取更多数据,否则不需要连接。加入:

SELECT p.ID, COUNT(c.comment_ID)
FROM wp_posts p
JOIN wp_comments c ON c.comment_post_ID = p.ID
GROUP BY p.ID
ORDER BY COUNT(c.comment_ID)
于 2009-05-31T22:49:53.707 回答
3
SELECT p.ID, count(c.comment_ID) AS [count]
FROM wp_posts p, wp_comments c 
WHERE p.ID = c.comment_post_ID 
GROUP BY c.comment_post_ID;
ORDER BY [count] DESC
于 2009-05-31T22:45:36.353 回答
0

可能评论表上没有相关数据,所以请尝试按帖子ID分组,并请学习JOIN语句,它很有帮助并且产生更好的结果

SELECT p.ID, count(c.comment_ID) 
FROM wp_posts p
LEFT JOIN wp_comments c ON (p.ID = c.comment_post_ID)
GROUP BY p.ID

我在 SQL 查询过程中也遇到过这种情况 :)

于 2012-11-20T23:46:47.763 回答