我有一列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