mysql count()和null

xurqigkl  于 2021-06-20  发布在  Mysql
关注(0)|答案(5)|浏览(370)

我说的对吗:

COUNT(expr)
WHERE expr IS NOT *

将只计算非空值?
威尔 COUNT(*) 总是数到所有行?如果所有列都为空呢?

qeeaahzv

qeeaahzv1#

使用mysql,我发现了一个简单的方法:

SELECT count(ifnull(col,1)) FROM table WHERE col IS NULL;

这种方法行不通:

SELECT count(col) FROM table WHERE col IS NULL;
9o685dep

9o685dep2#

刚刚检查过:

select count(*)

返回1,其中一条记录用空值填充

select count(field)

返回0。
我看不到记录中有空值的点。此类记录不得存在。

mv1qrgav

mv1qrgav3#

count(*) 不适用于非空列,它只是要求计算所有行的方法。大致相当于 count(1) .

pvcm50d1

pvcm50d14#

如果你也想计算空值,试试看

SELECT COUNT(IFNULL(col, 1)) FROM table;
ogq8wdun

ogq8wdun5#

对的。count()是表中的所有行,count(expression)是表达式仅为非null的地方。
如果所有列都为null(这表示您没有主键,因此在规范化数据库中不应发生这种情况),count(
)仍然返回插入的所有行。别那么做。
您可以将*符号视为“在表中”而不是“在任何列中”。
mysql参考手册中介绍了这一点。

相关问题