SQL Join和Count不能正确GROUP BY吗?

时间:2009-05-31 22:43:24

标签: sql join count group-by

所以我想说我要选择所有博客文章的ID,然后选择与该博文相关的评论计数,如何使用GROUP BY或ORDER 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;

3 个答案:

答案 0 :(得分: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中,除非你从posts表中提取更多数据,否则不需要连接。加入:

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)

答案 1 :(得分: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

答案 2 :(得分: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查询旅程中也遇到过这种情况:)