需要帮助将条件COUNT()添加到已使用JOIN的查询中

时间:2009-09-02 20:02:25

标签: sql mysql count

这是我需要取的东西:
  - 有评论的帖子
  - 每个帖子的评论数量
  - 每个帖子的未读评论数量(由“评论”表中的bool“读取”列表示)

最后一部分是我遇到的麻烦。
到目前为止,这是我的SQL:

  

选择
     posts.id
     ,posts.title
     ,COUNT(comments.id)AS commentsCount
     来自帖子
     INNER JOIN评论
      ON comments.postID = posts.id
     GROUP BY       posts.id
     订购单       comments.createDate DESC

到目前为止这个工作正常,但我需要COUNT()有多少条评论的“读取”字段等于0.我不知道如何在现有查询中执行此额外的COUNT()。

提前致谢!

2 个答案:

答案 0 :(得分:3)

怎么样

SUM(CASE comments.Read WHEN 0 THEN 1 ELSE 0 END)

答案 1 :(得分:2)

SELECT
  p.id
  , p.title
  , COUNT(c.id) AS commentsCount
  , SUM(CASE c.IsRead WHEN 0 THEN 1 ELSE 0 END) AS commentsRead
  , SUM(CASE c.IsRead WHEN 0 THEN 0 ELSE 1 END) AS commentsUnRead
FROM 
  posts p
INNER JOIN 
  comments c
ON 
  c.postID = p.id
GROUP BY
  p.id
ORDER BY
  c.createDate DESC