通常,当NULL
涉及任何方程式时,整个结果就会分解为NULL
(例如SELECT 2 + NULL + 5
return NULL
)
在以下情况下相同:
SELECT SUM(NULL)
返回NULL
。Proposition #1
当SUM
用于聚合列并且该列也可以包含NULL
值时会发生什么?
基于proposition #1
为什么输出不会导致的原因NULL
。
CREATE TABLE t (age INT NULL);
INSERT INTO t (age) VALUES (15),(20), (NULL), (30), (35);
SELECT
SUM(age)
FROM t;
输出: 100
但是我在期待NULL
。
在这种情况下,MySQL是否会默默地跳过那些NULL值?
嗯,在手册中有解释
SUM([DISTINCT] expr)
返回expr之和。如果返回集没有行,则SUM()返回NULL。DISTINCT关键字只能用于对expr的不同值求和。如果没有匹配的行,SUM()将返回NULL。
更重要的是,它还说:
本节介绍对值集进行操作的组(汇总)函数。除非另有说明,否则组函数将忽略NULL值。
换句话说,SUM的行为就像这样,因为这就是它的定义方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句