在学习MySQL的过程中,遇到的一个小问题,感觉挺有意思。
现在我们有一张表
我们需要查出value为4的个数
↓错误方式:结果为10
↓正确方式:结果为3
逻辑上有些奇怪,为什么要加这个OR NULL
呢?
我们看一下COUNT()
方法括号中的表达式对应的值:
|表达式| 4=4 | 3=4 | 1 OR NULL | 0 OR NULL |
|:—|:—|:—|:—|:—|
|值| 1 | 0 | 0 | NULL |
原来,只要值不为NULL
(相等为1,不等为0,他们都不为NULL
),COUNT()
就会计数。
所以,加的这个OR NULL
,有点三元运算符的意味呢。