我是oracle sql&的新手尝试使用以下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
答案 0 :(得分:0)
使用>= ALL (...)
时,检查您的值是否大于或等于列表中的最大值。在这种情况下,您的列表是(80,90,100),因此只有那些大于或等于100的值才是结果集的一部分。
点击此链接以更全面地了解ALL
:
http://www.oracle-base.com/articles/misc/all-any-some-comparison-conditions-in-sql.php
如果您想获得部门为80,90或100的所有记录,即与3个值中的任何一个完全匹配,您应该使用IN
关键字,如下所示:
select first_name|| ' ' || last_name "Name", department_id
from employees
where department_id in (80, 90, 100);
答案 1 :(得分:0)
这是所有比较器之间的区别。