【问题标题】:Getting incorrect result when using IS NOT NULL with COUNT function - MySQL将 IS NOT NULL 与 COUNT 函数一起使用时得到不正确的结果 - MySQL
【发布时间】:2016-12-03 21:47:28
【问题描述】:

我有一个音乐曲目表,其中包含一个长度字段,用于存储有关每个单独曲目的长度的信息。我正在尝试查询数据库以找出最大轨道长度、最小轨道长度,并且我希望返回列出长度的轨道数(不为空)。

声明如下:

SELECT MAX(length), MIN(length), COUNT(length)
FROM tracks WHERE length IS NOT NULL;

问题是 COUNT() 返回的值是完全相同的,无论我是否在末尾包含 IS NOT NULL 运算符。该表有大约 25 个为 NULL 的条目,所以当我将 NOT NULL 运算符添加到语句的末尾时,我肯定会得到 COUNT() 的较低结果吗?

【问题讨论】:

    标签: mysql count null


    【解决方案1】:

    文档说 count 将忽略空列 http://dev.mysql.com/doc/refman/5.7/en/counting-rows.html

    包含 where 子句不会有什么不同。

    【讨论】:

    • 这是正确的。如果要计算WHERE 匹配的所有行,请使用COUNT(*)COUNT(1)(它们是等效的)。如果你想计算 col1 不为空的行,这正是 COUNT(col1) 所做的。
    【解决方案2】:

    BACKTICKS 是你的朋友:length 是 MySQL 中的一个函数名,如果你想用它作为字段名,你必须把它放在反引号中,如下所示:

    SELECT MAX(`length`), MIN(`length`), COUNT(`length`)
    FROM tracks WHERE `length` IS NOT NULL;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2013-02-04
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多