基本上我想选择至少有一条评论的所有帖子,并获得每条评论的评论数。到目前为止,我所追求的只是给我一个结果,这个结果有一个准确的数字,但是有不止一个帖子有评论。可以在任何建议的更改,使这项工作选择至少有一条评论的帖子
SELECT
posts.id,
COUNT(DISTINCT comments.post_id) AS count
FROM
posts
LEFT JOIN comments ON posts.id = comments.post_id
基本上我想选择至少有一条评论的所有帖子,并获得每条评论的评论数。到目前为止,我所追求的只是给我一个结果,这个结果有一个准确的数字,但是有不止一个帖子有评论。可以在任何建议的更改,使这项工作选择至少有一条评论的帖子
SELECT
posts.id,
COUNT(DISTINCT comments.post_id) AS count
FROM
posts
LEFT JOIN comments ON posts.id = comments.post_id
你需要一个group by
声明。你可以改变join
为内部连接,因为你想与评论仅供网友的帖子:
SELECT p.id, COUNT(*) AS count
FROM posts p INNER JOIN
comments c
ON p.id = c.post_id
GROUP BY p.id;
表达count(distinct c.post_id)
将返回1
每一行,因为只有一个独特的ID后的每一行。 COUNT(*)
将获得评论的数量。
正是我想弄明白的!谢谢 – user1715025
中使用聚合函数,您必须将它们分组see here GROUP BY (Aggregate) Functions有关的职位必须至少含有一个一个评论,你可以使用HAVING count >= 1
SELECT
posts.id,
COUNT(DISTINCT comments.post_id) AS `count`
FROM
posts
LEFT JOIN comments ON posts.id = comments.post_id
GROUP BY posts.id
HAVING `count` >= 1
如果您使用INNER JOIN,则不需要HAVING – road242
这很好。是否有可能获得计数值的实际计数,因为现在它说1。但结果是正确的。 – user1715025
@ road242是我不能改变,因为戈登已经提供了使用内部连接的答案 –
您不显示代码以显示结果。就我们所知,你可能不会循环。 – Steve