2009-05-31 60 views
3

假設我想選擇所有博客文章的ID,然後計算與該博客文章相關的評論數量,如何使用GROUP BY或ORDER BY以便返回的列表按評論數量的順序排列每個帖子?SQL加入和計數不能正確分組?

我有這個查詢返回的數據,但不是我想要的順序?通過品牌更改組無差異:

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

我不熟悉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) 
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 
+0

選擇p.ID,計數(c.comment_ID)從wp_posts p ccount,wp_comments c其中p.ID = c.comment_post_ID GROUP BYç .comment_ID ORDER BY ccount DESC; ^^只是返回所有的計數爲1(他們絕對不是全部1).. – 2009-05-31 22:49:44

+0

哦,它工作時,我做了p.ID組.. – 2009-05-31 22:52:13

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查詢的旅程:)