使用 WHERE 和 COUNT 在 sql 查询中返回错误值

Posted

技术标签:

【中文标题】使用 WHERE 和 COUNT 在 sql 查询中返回错误值【英文标题】:Wrong value returned in sql query using WHERE and COUNT 【发布时间】:2018-10-05 02:43:06 【问题描述】:

我有一个名为category_id 的列,其值可以是数字或空值(每行123 或空值)。我必须使用以下方法选择具有空值的类别 id 的总数 (COUNT):

SELECT COUNT(category_id) 
FROM products 
WHERE category_id = NULL;

它返回 0(错误值)。

【问题讨论】:

[重复]:***.com/questions/5285448/… mysql SELECT only not null values的可能重复 【参考方案1】:

Count(category_id) 只会计算 category_id 不为空的记录。 为了与 NULL 进行比较,SQL 语法是“IS NULL”,而不是“= NULL”。

计算总使用量:

SELECT COUNT(1) FROM products WHERE category_id IS NULL ;

【讨论】:

【参考方案2】:

只需像这样使用IS NULLcategory_id

SELECT COUNT(category_id) 
FROM products 
WHERE category_id IS NULL;

【讨论】:

【参考方案3】:

COUNT 是一个聚合函数的例子,你需要使用 GROUP BY 试试这个:

SELECT COUNT(category_id) AS n FROM products WHERE category_id IS NULL GROUP BY category_id

【讨论】:

不,因为他只是选择计数,所以真的没有什么可以使用GROUP BY on.....【参考方案4】:

试试这个:

SELECT COUNT(category_id) FROM products WHERE category_id IS NULL;

NULL值不能用'='操作符比较,所以用'IS'关键字代替'='

【讨论】:

【参考方案5】:

在 where 子句中使用:category_id IS NULL 而不是 category_id= NULL

【讨论】:

以上是关于使用 WHERE 和 COUNT 在 sql 查询中返回错误值的主要内容,如果未能解决你的问题,请参考以下文章

选择 Count Where Values 大于 0 SQL Server

SQL/Impala:将多个查询(具有不同的 where 子句)合并为一个

访问 SQL 子查询 WHERE 子句不过滤结果 [关闭]

SQL中where和group by可以连用吗?having算是对检索条件的补充吗?

sql where后面不能使用别名吗

SQL杂记