create table t (f int null);
select 1 where 1 >= (select max(f) from t); -- 1select 1 where 1 >= all(select f from t); -- 2insert into t values (null), (0);select 1 where 1 >= (select max(f) from t); -- 3select 1 where 1 >= all(select f from t); -- 4
http://www.sqlfiddle.com/#!6/3d1b1/1
第一个不
select返回任何内容,第二个
select返回
1。
MAX返回标量值。如果不存在任何行,则
MAX返回
NULL。
1 >= NULL在第1行上,
1 >= allfs不成立。另一方面,s是成立,因为根本没有
f条件 不 成立的s 。
第三次
select返回
1,第四次不
select返回任何内容。
MAX像所有聚合函数一样,忽略
NULL。
MAX(f)在第3行上为0,并且
1 >= 0为true。
ALL否:它
1 >= NULL AND1 >= 0在第4行求值,这是不正确的。



