dongwo5589 2016-10-18 20:36
浏览 97
已采纳

MySQL连接和COUNT()不返回所有记录

I have two database tables: "blog_posts" and "blog_comments".

blog_posts:

postID | postTitle   | postContent               | ...  
1      | Hello World | This is a blog post       | ...  
2      | Lorem Ipsum | This is another blog post | ...  
3      | Test Post   | This is a third post      | ...

blog_comments:

commentID | postID | comment   | ...  
1         | 1      | Very cool | ...  
2         | 1      | Nice      | ..

My current sql query is:

SELECT
  blog_posts.*,
  COUNT(blog_comments.commentID) AS commentCount
FROM
  blog_posts
  LEFT JOIN blog_comments ON blog_posts.postID = blog_comments.post_id;

I want it to return 0 as commentCount if there are no comments to this post, but instead the query returns only the first post which is the only one which has comments at the moment.

How can I fix that?

Thanks.

  • 写回答

1条回答 默认 最新

  • dongzouban9871 2016-10-18 20:42
    关注

    You're using COUNT without specified grouping column which means all rows are agregated into one and count is evaluated on the whole set.

    Specify grouping column explicitely and you should be fine:

    SELECT
      blog_posts.*,
      COUNT(blog_comments.commentID) AS commentCount
    FROM
      blog_posts
      LEFT JOIN blog_comments ON blog_posts.postID = blog_comments.post_id
    GROUP BY blog_posts.postID;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器