select * from emp where emp.sal>all(select 1 from dual where 1<>1);为什么这条语句会返回所有emp中的记录???
难道emp.sal>all(没有查到记录) 的时候是true?

解决方案 »

  1.   

    问题就是 emp.sal  和 null  那个 大?
    select * from emp where emp.sal> null
      

  2.   

     > null 就不對啦, 
    null 數據是不接受 比較條件的。例如(= >,<, like)
      

  3.   

    这个all里面不能理解为nullselect * from emp where emp.sal>all(null);
    PERSONID        SAL     DEPTNO
    ---------- ---------- ----------select * from emp where emp.sal>all(select 1 from dual where 1<>1);
      PERSONID        SAL     DEPTNO
    ---------- ---------- ----------
             1       2000          1
             2       1500          1
             3       2500          1
             4       3000          1
             5       2000          2
             6       1500          2
             7       2500          2
             8       3000          2
             9       2000          3
            10       1500          3
            11       2500          3
            12       3000          3只要all里面没有一条记录是满足>emp.sal的话,就可以取出改记录,
    现在all里面没记录,所以所有记录都可以取出