select 1 
where 1< all (select 2 where 1=0)
/*返回一条记录*/select 1 
where 1< (select 2 where 1=0)
/*没有记录*/

解决方案 »

  1.   

    如果所有给定的比较对(scalar_expression, x)均为 TRUE,其中 x 是单列集中的值,则返回 TRUE;否则返回 FALSE。
    select 1 
    where 1< all (select 2 where 1=0)   
    /*返回一条记录*/可能是子查询结果没有时,没有可比性,当成TRUE处理吧。
      

  2.   

    子查询没有结果时,没有比较对,认为是所有的比较对均为TRUE,倒也勉强说得过去。
      

  3.   

    难道真的是“返回空集,ALL就认为真?”这个设计也太有问题了吧…………