MySQL COUNT()和nulls

ice*_*l89 16 mysql

我是否正确地说:

COUNT(expr)
WHERE expr IS NOT *  
Run Code Online (Sandbox Code Playgroud)

只计算非空值吗?

COUNT(*)始终统计所有行?如果所有列都为空怎么办?

God*_*eke 23

正确.COUNT(*)是表中的所有行,COUNT(表达式)是表达式仅为非空的位置.

如果所有列都为NULL(表示您没有主键,那么这不应该发生在规范化数据库中)COUNT(*)仍然会返回插入的所有行.只是不要这样做.

您可以将*符号视为"在表中"而不是"在任何列中".

这涉及MySQL参考手册.


Roe*_*oey 14

如果你想计算NULL,试试吧

SELECT COUNT(IFNULL(col, 1)) FROM table;
Run Code Online (Sandbox Code Playgroud)


Ser*_*gei 5

刚检查过:

选择计数(*)

返回1,其中一条记录填充NULL

选择计数(字段)

返回0.

我没有在NULL值中看到记录中的点.这种记录不得存在.