我有一列tbl_press_release和tbl_press_release_comment,與列press_release_id相關。 tbl_comment每條評論都有一行。在單獨的行中計數重複值並對它們進行排序
如何計算每個press_release_id有多少評論?
這會返回每個新聞稿,但CommentCount對所有人都是一樣的。
我有一列tbl_press_release和tbl_press_release_comment,與列press_release_id相關。 tbl_comment每條評論都有一行。在單獨的行中計數重複值並對它們進行排序
如何計算每個press_release_id有多少評論?
這會返回每個新聞稿,但CommentCount對所有人都是一樣的。
您需要使用GROUP BY
子句將註釋與JOIN
語句正確聚合以鏈接兩個表。
SELECT pr.press_release_subject, COUNT(*) AS CommentCount
FROM tbl_press_release pr
LEFT JOIN tbl_press_release_comment prc ON prc.press_release_id = pr.id
GROUP BY press_release_subject
ORDER BY CommentCount DESC
的加入可能無法正常工作,是因爲我不知道你的列名。
您當前的查詢基本上會要求每個新聞發佈主題以及每條評論的計數。沒有GROUP BY
,您的DBMS不知道如何分開計數。
GROUP BY
告訴您的DBMS聚集函數必須在指定的列中爲每個不同值返回一條記錄。例如,上面的查詢告訴要計算主題爲press_release_subject
的評論數。如果使用聚合函數(如COUNT
,SUM
,AVG
等),則必須在GROUP BY
子句中指定任何想要並排返回的常規列。
SELECT
pr.press_release_subject,
COUNT(*) CommentCount
FROM tbl_press_release pr
LEFT JOIN tbl_press_release_comment prc
ON pr.press_release_id = prc.press_release_id
GROUP BY pr.press_release_subject
ORDER BY COUNT(*) DESC
這也適用於我,謝謝! – negzero7 2011-04-19 14:12:22
您可以按聚合排序。列別名甚至在'ORDER BY'中是OK的 – 2011-04-19 14:01:06
@Martin啊,必須是'WHERE'子句,你不能那麼。謝謝! – zneak 2011-04-19 14:05:34
感謝您的信息,我還沒有使用GROUP BY,我的SQL-fu很弱! – negzero7 2011-04-19 14:12:04