【问题标题】:how to count NULL categories in one SQL question如何在一个 SQL 问题中计算 NULL 类别
【发布时间】:2010-03-19 07:09:20
【问题描述】:

我有一个博客应用程序是 Post belongsTo Category 和 Category hasMany Post

帖子可以有或没有类别 - 在后一种情况下,Post.category_id 字段中存在 NULL 值。

现在我想通过单个 SQL 查询获得以下类别计数

category|post_count
--------------
PHP | 2
JavaScript | 4
SomeOtherCat | 1
NULL | 3

这里的线索是我还想计算没有类别的帖子(上面的空行)。一个 SQL 查询是否可行?

【问题讨论】:

    标签: sql null group-by


    【解决方案1】:
    SELECT
      c.CategoryName,
      COUNT(*)
    FROM
      Posts p
        left join
      Category c
        on
          p.Category_id = c.Category_id
    group by
      c.CategoryName
    

    (出于分组依据的目的,所有 NULL 结果都进入同一个组。这对于一些只习惯于编写条件时 NULL != NULL 的事实的人来说可能会感到惊讶)

    【讨论】:

      【解决方案2】:

      它应该与这样的东西一起使用:

      SELECT C.category, COUNT(*) AS post_count
      FROM Post P
      LEFT JOIN Category C ON P.category_id=C.category_id
      GROUP BY C.category
      

      我不确定 Category 中的标识列,您可能需要替换为正确的名称。

      编辑:糟糕 - 忘记分组了。

      【讨论】:

        【解决方案3】:
        SELECT C.CategoryName, Count(P.Post_ID)
        FROM Category C INNER JOIN Posts P
        ON P.CategoryID = C.CategoryID
        GROUP BY C.CategoryName
        UNION
        SELECT NULL, Count(P.Post_ID)
        FROM Posts P
        WHERE P.CategoryID IS NULL
        GROUP BY NULL
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-15
          • 1970-01-01
          • 2011-10-16
          • 1970-01-01
          • 1970-01-01
          • 2021-04-11
          • 1970-01-01
          相关资源
          最近更新 更多