Pra*_*ana 33
SQL>
SQL> -- Use the ANY operator in a WHERE clause to compare a value with any of the values in a list.
SQL>
Run Code Online (Sandbox Code Playgroud)
SQL> - 您必须在任何之前放置一个=,<>,<,>,<=或> =运算符.
SQL>
SQL> SELECT *
2 FROM employee
3 WHERE salary > ANY (2000, 3000, 4000);
Run Code Online (Sandbox Code Playgroud)
对于In Operator
SQL> -- Use the IN operator in a WHERE clause to compare a value with any of the values in a list.
Run Code Online (Sandbox Code Playgroud)
但是使用In你不能使用=,<>,<,>,<=或> =
Tej*_*tel 17
IN->等于列表中的任何一个.
ANY->比较子查询返回的每个值的值.
所有>比较子查询返回的每个值的值.
例如:
IN:(Q):显示所有薪资与部门最低投资匹配的员工的详细信息?
(A):SQL>从Emp Where Sal IN中选择Ename Sal Deptno(从Deptno选择Min(Sal)来自Emp Group);
任何:
Meaans小于列表中的最大值.
(问):获取所有员工的详细信息,这些员工的收入低于最高收入员工控制其他员工?
(A):SQL>从Emp Where Sal选择Empno Ename Job Sl
任何: - > Meaans超过列表中的最小值.
(问):获取所有收入超过10部门最低收入的所有人的详细信息?
(A):SQL>从Emp选择Empno Ename Job Sal,其中Sal> Any(选择Min(Sal)From Emp Where Deptno 10);
任何: - >它相当于In Operator.
注意:'Some'也用于任何内容.
Wer*_*eit 11
也许为了更好地理解,这两个条件是等价的.你使用的是一个品味问题(如果RDBMS支持它们)
... WHERE x IN (SELECT Y FROM THE_TABLE)
... WHERE x =ANY (SELECT Y FROM THE_TABLE)
Run Code Online (Sandbox Code Playgroud)
这些也是
... WHERE x NOT IN (SELECT Y FROM THE_TABLE)
... WHERE x <>ALL (SELECT Y FROM THE_TABLE)
Run Code Online (Sandbox Code Playgroud)
其实我个人的习惯是使用IN了列表表达式(如WHERE x IN (2,4,6,8)和=ANY,RESP.<>ALL为子查询.
虽然全部使用
SELECT empno,sal FROM emp WHERE sal> ALL(2000,3000,4000);
EMPNO SAL
Run Code Online (Sandbox Code Playgroud)
7839 5000
Run Code Online (Sandbox Code Playgroud)
它将返回与查询等效的结果:
SELECT empno,sal FROM emp WHERE sal> 2000 AND sal> 3000 AND sal> 4000;
在使用任何时
SELECT empno,sal FROM emp WHERE sal> ANY(2000,3000,4000);
EMPNO SAL
Run Code Online (Sandbox Code Playgroud)
7566 2975
7698 2850
7782 2450
7788 3000
7839 5000
7902 3000
Run Code Online (Sandbox Code Playgroud)
返回与...相同的结果
SELECT empno,sal FROM emp WHERE sal> 2000 OR sal> 3000 OR sal> 4000;
小智 5
IN - 很容易理解。查询应仅选择“IN”子句中指定的那些值。现在,让我们通过查询来理解“ANY”。ANY 表示它应该大于或小于列表中的任何值。
假设一个 Orders 表的 OrderID 从 1 到 10
观察以下查询:从 Orders
where OrderID < ANY (3,5,7)
中选择 OrderID
上述查询的答案是:
OrderID
1,2,3,4,5,6
解释:查询表示查找小于任意指定值的 OrderID。因此,数据库搜索并包含 OrderID,如下所示:
Is 1<3- 是,因此包含 OrderID 1
Is 2<3- 是,因此包含 OrderID 2
Is 3<3- 否,is 3<5 - 是(指定为 5)值),因此包含 OrderID 3
Is 4<3- 否,为 4<5 - 是,因此包含 OrderID 4
Is 5<3- 否,为 5<5 -否,为 5<7(指定为 5值)-是,因此包含 OrderID 5
是 6<3- 否,是 6<5 -否,是 6<7-是,因此包含 OrderID 6 是 7<
3- 否,是 7<5 -否,是 7 <7-否,因此不包含 OrderID 7,因为指定列表中不再有要比较的值
是 8<3- 否,是 8<5 -否,是 8<7-否,因此不包含 OrderID 8,因为指定列表中不再有值指定要比较的列表
是 9<3- 否,是 9<5 - 否,是 9<7-否,因此不包括 OrderID 9,因为指定列表中没有更多值要比较
是 9<3- 否,是 9<5 -否,是 9<7-否,因此不包含 OrderID 9,因为指定列表中没有更多值可供比较
对大于从
OrderID > ANY (3,5,7) 的
订单中选择的 OrderID应用相同的逻辑
上述查询的答案是:
OrderID
4,5,6,7,8,9,10