Oracle SQL比较运算符(所有)行为
我不熟悉oraclesql&试图用下面的select语句查询数据库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|| ' ' ||
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。。。谢谢你们,这很有帮助。