我说得对吗:
COUNT(expr)
WHERE expr IS NOT *
Will count only non nulls?
COUNT(*)
是否总是计算所有行?如果所有列都为空怎么办?
最佳答案
正确。 COUNT(*) 是表中的所有行,COUNT(Expression) 是仅表达式非空的情况。
如果所有列均为 NULL(这表明您没有主键,因此在规范化数据库中不应发生这种情况)COUNT(*) 仍然 返回插入的所有行。只是不要这样做。
您可以将 * 符号视为“在表中”而不是“在任何列中”的含义。
这在 MySQL Reference Manual 中有介绍。 .
关于MySQL COUNT() 和空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52220124/