首页 > 解决方案 > MAX() 函数返回所选列的最大值,但 SELECT MAX(A) FROM t WHERE a>1000 返回 NULL 为什么?

问题描述

表 T 存在单列 A,其中有 4 行的值 - 100、200、NULL、300。

以下查询的输出是什么?

SELECT MAX(A) FROM t WHERE a>1000;

选项包括:

正确答案是NULL。我的解释是查询应该返回 No rows 但正确的答案是 NUll。

有人可以解释一下吗?

标签: sqlaggregate-functions

解决方案


WHERE条件不满足表中的任何行,所以

select a
from t
where a > 1000;

不返回任何行。

然而,“无”的最大值是NULL

在 SQL 中,NULL是缺少信息。当数据库找不到数据时,这是自然的选择。

max()像, min()or的聚合count()如果不使用GROUP BY


推荐阅读