我有一个由press_release_id列相关的tbl_press_release和tbl_press_release_comment。每个评论都有一行tbl_comment。
我如何计算每个press_release_id有多少条评论?
SELECT
press_release_subject,
(SELECT COUNT(press_release_id)
FROM tbl_press_release_comment) as CommentCount
FROM
tbl_press_release pr
ORDER BY
CommentCount DESC
这将返回每个新闻稿,但CommentCount对所有新闻稿都是相同的。
答案 0 :(得分:2)
您需要使用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
等),则必须在{{1}中指定要并排返回的任何常规列条款。
答案 1 :(得分:1)
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