【问题标题】:Need help adding a conditional COUNT() to a query already using JOINs需要帮助将条件 COUNT() 添加到已经使用 JOIN 的查询
【发布时间】:2010-11-25 02:01:40
【问题描述】:

这是我需要获取的内容:
- 有 cmets 的帖子
- 每个帖子的 cmets 数量
- 每个帖子的未读 cmets 数(由 "cmets" 表中的布尔 "read" 列表示)

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

选择
帖子.id
, 帖子.title
, COUNT(cmets.id) AS cmetsCount
来自帖子
内连接 cmets
打开 cmets.postID = posts.id
分组
帖子.id
订购者
cmets.createDate DESC

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

提前致谢!

【问题讨论】:

    标签: sql mysql count


    【解决方案1】:

    怎么样

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

    【讨论】:

    • 效果很好,谢谢!我对CASE不熟悉,我有一些研究要做:)
    【解决方案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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 2013-09-16
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多