SQL中IN
和ANY
运算符之间有什么区别?
答案 0 :(得分:29)
SQL>
SQL> -- Use the ANY operator in a WHERE clause to compare a value with any of the values in a list.
SQL>
<强> SQL&GT; - 您必须在任何之前放置=,&lt;&gt;,&lt;,&gt;,&lt; =或&gt; =运算符。
SQL>
SQL> SELECT *
2 FROM employee
3 WHERE salary > ANY (2000, 3000, 4000);
For In Operator
SQL> -- Use the IN operator in a WHERE clause to compare a value with any of the values in a list.
但使用In你不能使用=,&lt;&gt;,&lt;,&gt;,&lt; =,或&gt; =
答案 1 :(得分:16)
IN-&gt;等于列表中的任何一个。
ANY-&gt;将值与子查询返回的每个值进行比较。
全部&gt;将值与子查询返回的每个值进行比较。
例如:
在: (问):显示所有员工与部门最低投资匹配的员工的详细信息?
(A): SQL&gt;从Emp Where中选择Ename Sal Deptno Sal IN(从Deptno的Emp Group选择Min(Sal));
ANY:
Meaans小于列表中的最大值。
(问):获取所有员工的详细信息,这些员工的收入低于最高收入员工控制其他员工?
(A): SQL&gt;从Emp中选择Empno Ename Job Sl 萨尔
ANY: - &gt; Meaans超过列表中的最小值。
(问):获得所有收入超过10部门最低收入的人的详细信息?
(A): SQL&gt;从Emp中选择Empno Ename Job Sal 其中Sal&gt; Any(选择Min(Sal)From Emp Where Deptno 10);
ANY: - &gt;它等同于In Operator。
注意:'某些'也用于任何内容。
答案 2 :(得分:10)
也许为了更好地理解,这两个条件是等价的。你使用的是一个品味问题(如果RDBMS同时支持它们)
... WHERE x IN (SELECT Y FROM THE_TABLE)
... WHERE x =ANY (SELECT Y FROM THE_TABLE)
还有这些
... WHERE x NOT IN (SELECT Y FROM THE_TABLE)
... WHERE x <>ALL (SELECT Y FROM THE_TABLE)
实际上我的个人习惯是使用IN
列表表达式(例如WHERE x IN (2,4,6,8)
和=ANY
,分别为<>ALL
进行子查询。
答案 3 :(得分:7)
使用全部
SELECT empno,sal 来自emp 在哪里sal> ALL(2000,3000,4000);
EMPNO SAL
7839 5000
它将返回等同于query的结果:
SELECT empno,sal 来自emp 在哪里sal> 2000 AND sal&gt; 3000 AND sal&gt; 4000;
使用任何
SELECT empno,sal 来自emp 在哪里sal>任何(2000,3000,4000);
EMPNO SAL
7566 2975
7698 2850
7782 2450
7788 3000
7839 5000
7902 3000
返回与
相同的结果SELECT empno,sal 来自emp 在哪里sal> 2000 OR sal&gt; 3000 OR sal&gt; 4000;
答案 4 :(得分:2)
SQL SERVER 2008R2中的任何和所有操作员。
使用&gt;比较运算符作为示例,&gt; ALL表示大于每个值 - 换句话说,大于最大值。例如,&gt; ALL(1,2,3)意味着大于3.> ANY意味着大于至少一个值,即大于最小值。所以&gt; ANY(1,2,3)意味着大于1。
类似地,&gt; ANY表示对于满足外部查询中指定的条件的行,引入子查询的列中的值必须大于由此返回的值列表中的至少一个值。子查询。
答案 5 :(得分:1)
有了ANY,你需要一个操作员:
WHERE X > ANY (SELECT Y FROM Z)
使用IN,你不能。它总是在测试平等。
答案 6 :(得分:1)
ANY和ALL运算符与WHERE或HAVING子句一起使用。
如果任何子查询值满足条件,则ANY运算符返回true。
如果所有子查询值都满足条件,则ALL运算符返回true。
答案 7 :(得分:0)
当我们使用“ IN”比较任何列值时,某些集合会说{value1,value2 ...}
,那么列值必须出现在集合中,但是如果是ANY,我们将进行如下比较:
col.value > ANY ({value1,value2,...})
然后该值必须大于设置值中的任何一个。
如果是“全部”
col.value> ALL({value1,value2,...})
该值必须大于集合中的所有值。
请参考以下图片以更好地理解:
答案 8 :(得分:0)
(in)是一种特殊的运算符,用于从我们指定的值列表中一个接一个地选择值。而(any)与where子句
一起使用答案 9 :(得分:0)
IN-很容易理解。该查询应仅选择“ IN”子句中指定的那些值。 现在,让我们通过查询了解“ ANY”。 ANY表示该值应大于或小于列表中的任何值。
假设一个Orders表的OrderID从1到10
观察以下查询: 上述查询的答案是: 说明:查询显示查找小于指定值ANY的OrderID。因此,数据库搜索并包含OrderID,如下所示: 将相同的逻辑应用于大于 上述查询的答案是:
从订单中选择OrderID
其中OrderID
OrderID
1,2,3,4,5,6
是1 <3-是,因此包含OrderID 1
是2 <3-是,因此包含了OrderID 2
是3 <3-否,是3 <5-是(因为5是指定值),因此包含OrderID 3
是4 <3-否,是4 <5-是,因此包含OrderID 4
是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
其中OrderID> ANY(3,5,7)
OrderID
4,5,6,7,8,9,10
答案 10 :(得分:0)
= ANY 相当于 IN 运算符。 "<>、<、>、<= 或 >=" 其中之一可以放在 ANY 运算符之前。 请注意,<> ANY 运算符与 NOT IN 不同。
ANY 和 ALL 运算符与 WHERE 或 HAVING 子句一起使用。
如果任何子查询值满足条件,则 ANY 运算符返回 true。
如果所有子查询值都满足条件,则 ALL 运算符返回 true。