2

这是一个哲学问题,我猜...

假设我在 SQL Server 中执行此查询:

SELECT mygroup, COUNT(mycolumn)
FROM mytable
GROUP BY mygroup

计数列包含 NULL 并且 ANSI_WARNINGS 选项为 ON,所以我得到:

警告:空值被聚合或其他 SET 操作消除。

我明白这意味着什么。并且有很多方法可以“修复”这个警告。但是......为什么它首先抱怨?

跳过任何 NULL 就可以COUNT(mycolumn)如果我想计算所有行,包括该列的 NULL,我会使用COUNT(*). 我的意图是跳过 NULL ,这不是很清楚吗?

我猜 ANSI 标准需要这个警告,即使在这种明显的情况下也是如此。为什么?

4

1 回答 1

0

仅当聚合结果集中存在实际空值时才会出现警告。我相信它会提醒您不会计算空值,并在您遇到数据一致性问题时警告您,因为空值出现在您没想到的地方。

于 2013-07-10T16:29:53.577 回答