sql中的in和任何运算符之间的区别

时间:2010-09-13 09:56:59

标签: sql operators any

SQL中INANY运算符之间有什么区别?

11 个答案:

答案 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

观察以下查询:
从订单中选择OrderID
其中OrderID

上述查询的答案是:
OrderID
1,2,3,4,5,6

说明:查询显示查找小于指定值ANY的OrderID。因此,数据库搜索并包含OrderID,如下所示:
是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。