Oracle SQL比较运算符(所有)行为

Oracle SQL比较运算符(所有)行为,sql,Sql,我不熟悉oraclesql&试图用下面的select语句查询数据库 select first_name || last_name "Name", department_id from employees where department_id >= all (80,90,100);" 我期望的结果是80、90、100分及以上,但我得到100分及以上。为什么我看不到80年代和90年代?这是一个截图 SQL> select first_name|| ' ' ||

我不熟悉oraclesql&试图用下面的select语句查询数据库

select first_name || last_name "Name", 
       department_id 
from employees 
where department_id >= all (80,90,100);" 
我期望的结果是80、90、100分及以上,但我得到100分及以上。为什么我看不到80年代和90年代?这是一个截图

SQL> select first_name|| ' ' || last_name "Name", department_id
  2  from employees where department_id >= all (80, 90, 100);

Name                                           DEPARTMENT_ID
---------------------------------------------- -------------
Nancy Greenberg                                          100
Daniel Faviet                                            100
John Chen                                                100
Ismael Sciarra                                           100
Jose Manuel Urman                                        100
Luis Popp                                                100
Shelley Higgins                                          110
William Gietz                                            110
选择8行

SQL> select distinct department_id from employees;

DEPARTMENT_ID
-------------
      100
       30

       90
       20
       70
      110
       50
       80
       40
       60
当您使用>=ALL…,检查您的值是否大于或等于列表中的最大值。在本例中,您的列表是80,90100,因此只有大于或等于100的值才是结果集的一部分

查看此链接可更全面地了解以下所有内容:

如果要获取部门为80、90或100的所有记录,即与3个值中的任何一个值完全匹配,应使用IN关键字,如:

select first_name|| ' ' || last_name "Name", department_id 
from employees 
where department_id in (80, 90, 100);

这是所有比较器之间的区别

x=ALL…:该值必须与列表中的所有值匹配,才能计算为TRUE。 x!=ALL…:该值不得与列表中要计算为TRUE的任何值匹配。 x>ALL…:该值必须大于列表中的最大值才能计算为TRUE。 x=全部…:该值必须大于或等于列表中的最大值才能计算为真。
这看起来很熟悉。如果你能引用源代码就好了。当我参加oracle sql基础考试时,这是值得特别记住的。这里有一个链接,但通过谷歌搜索,你可能可以免费找到pdf。。。谢谢你们,这很有帮助。