SQL Count 不计算列中的“NULL”

Posted

技术标签:

【中文标题】SQL Count 不计算列中的“NULL”【英文标题】:SQL Count not counting "NULL" in column 【发布时间】:2021-09-15 03:24:15 【问题描述】:

我正在学习 MS SQL 并尝试计算在记录表中输入的不等于 actionID(column) 值 21 的用户。下面是查询,但它没有给我预期的结果。它没有考虑 NULL 值。它显示计数为 0,但它应该显示结果为 1。我在 actionID 列字段中有 NULL 值

Select COUNT(*) from db.record where userID ='xyz' AND NOT actionID = 21

【问题讨论】:

【参考方案1】:

这是为 MySQL 准备的你需要一个NULL-safe 比较:

NOT actionID <=> 21

几乎所有与NULL 的比较都返回NULL。而NOT NULL 仍然是NULL

对于 MS SQL,如下所示使用它

 (actionID <> 21 OR actionID is null)

【讨论】:

谢谢!!我们将如何在 MS SQL 中执行它,因为“”给了我们错误。它试图写“is NULL”以进行安全比较,但在查询执行中仍然有错误 @NetworkEngExploringCoding 。 . .您的问题被标记为 mysql,这提供了一个 MySQL 解决方案。 谢谢!它适用于 MySQL。对于 SQL,使用它就像 - AND (actionID != 21 OR actionID is null)

以上是关于SQL Count 不计算列中的“NULL”的主要内容,如果未能解决你的问题,请参考以下文章

SQL基础教程(第2版)第3章 聚合与排序:3-1 对表进行聚合查询

两个不同列中日期之间的 SQL COUNT

计算 MY SQL 或 MS SQL 列中的单个项目

1.表的聚合查询(和平均最大最小值)

对所有具有 null 的列进行取消透视

针对同一列中的另一个计算窗口函数