这是我需要取的东西:
- 有评论的帖子
- 每个帖子的评论数量
- 每个帖子的未读评论数量(由“评论”表中的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()。
提前致谢!
答案 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