所以我想说我要选择所有博客文章的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;
答案 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查询旅程中也遇到过这种情况:)