这是一个哲学问题,我猜...
假设我在 SQL Server 中执行此查询:
SELECT mygroup, COUNT(mycolumn)
FROM mytable
GROUP BY mygroup
计数列包含 NULL 并且 ANSI_WARNINGS 选项为 ON,所以我得到:
警告:空值被聚合或其他 SET 操作消除。
我明白这意味着什么。并且有很多方法可以“修复”这个警告。但是......为什么它首先抱怨?
跳过任何 NULL 就可以了COUNT(mycolumn)
!如果我想计算所有行,包括该列的 NULL,我会使用COUNT(*)
. 我的意图是跳过 NULL ,这不是很清楚吗?
我猜 ANSI 标准需要这个警告,即使在这种明显的情况下也是如此。为什么?