56

SQLのINと演算子の違いは何ですか?ANY

4

11 に答える 11

57
SQL>
SQL> -- Use the ANY operator in a WHERE clause to compare a value with any of the values in a list.
SQL>

SQL>-ANYの前に、=、<>、<、>、<=、または>=演算子を配置する必要があります。

SQL> SELECT *
  2  FROM employee
  3  WHERE salary > ANY (2000, 3000, 4000);

InOperatorの場合

SQL> -- Use the IN operator in a WHERE clause to compare a value with any of the values in a list.
SQL> SELECT *
  2  FROM employee
  3  WHERE salary IN (2000, 3000, 4000);

ただし、IN演算子を使用すると、=、<>、<、>、<=、または>=を使用できません。

于 2010-09-13T10:06:01.057 に答える
24

IN-リスト内のすべてに等しい

ANY-値をサブクエリによって返される各値と比較します。

ALL-値をサブクエリによって返されるすべての値と比較します。

例えば:

の:

給与が部門の投資額が最も少ないすべての従業員の詳細を表示しますか?

 Select Ename, Sal, Deptno 
 from Emp 
 Where Sal IN (Select Min(Sal) 
               From Emp 
               Group By Deptno);

どれか:

< ANYリストの最大値未満を意味します。

収益が最も高いマネージャーよりも収益が少ないすべての従業員の詳細を取得しますか?

 Select Empno, Ename, Job, Sal 
 From Emp
 Where Sal < Any (Select Distinct MGR 
                  From Emp);

> ANYリスト内の最小値よりも大きいことを意味します。

部門10で最低支払額を超えて稼いでいるすべての従業員の詳細を取得しますか?

 Select Empno, Ename, Job, Sal 
 From Emp
 Where Sal > Any (Select Min(Sal) 
                  From Emp 
                  Where Deptno 10);

= ANYin演算子と同等です。

注:SOMEの代わりに使用することもできますANY

于 2010-09-13T10:09:26.557 に答える
19

理解を深めるために、これら2つの条件は同等です。どちらを使用するかは好みの問題です(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

于 2014-04-01T07:08:30.660 に答える
8

すべてを使用している間

SELECT empno、sal FROM emp WHERE sal> ALL(2000、3000、4000);

 EMPNO        SAL

  7839       5000

クエリと同等の結果が返されます。

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

  7566       2975
  7698       2850
  7782       2450
  7788       3000
  7839       5000
  7902       3000

と同じ結果を返します

SELECT empno、sal FROM emp WHERE sal> 2000 OR sal> 3000 OR sal> 4000;

于 2014-04-24T03:06:40.203 に答える
3

ANYでは、演算子が必要です。

WHERE X > ANY (SELECT Y FROM Z)

INではできません。それは常に平等をテストしています。

于 2010-09-13T10:08:27.137 に答える
3

SQLSERVER2008R2のすべての演算子。

>比較演算子を例として使用すると、> ALLはすべての値よりも大きい、つまり最大値よりも大きいことを意味します。たとえば、> ALL(1、2、3)は3より大きいことを意味します。> ANYは、少なくとも1つの値より大きい、つまり最小値より大きいことを意味します。したがって、> ANY(1、2、3)は1より大きいことを意味します。

同様に、> ANYは、行が外部クエリで指定された条件を満たすために、サブクエリを導入する列の値が、サブクエリによって返される値のリストの値の少なくとも1つより大きくなければならないことを意味します。

于 2014-04-01T06:53:46.957 に答える
2

IN-わかりやすいです。クエリは、「IN」句で指定された値のみを選択する必要があります。さて、クエリで「ANY」を理解しましょう。ANYは、リスト内のどの値よりも大きいか小さい必要があることを意味します。

OrderIDが1から10のOrdersテーブルを想定します

以下のクエリを確認します 。OrderID<ANY(3,5,7)である
OrdersからOrderIDを選択します。

上記のクエリに対する答えは次のとおり です
。OrderID1,2,3,4,5,6

説明:クエリは、指定された値のいずれよりも小さいOrderIDを検索すると言います。したがって、データベースは次のようにOrderIDを検索して含めます。Is1
<3-はいしたがってOrderID1が含まれますIs2
<3-はいしたがってOrderID2が含まれますIs3
<3-いいえ、is 3 <5-はい(5が指定されているため)値)、したがって、 OrderID3が含まれますIs4
<3-いいえ、4 <5-はい、したがってOrderID4が含まれ
ますIs5 <3-いいえ、5 <5-いいえ、5 <7です(5が指定されているため)値)-はい、したがってOrderID5が含まれ
ますIs6 <3-いいえ、6 <5-いいえ、6 <7です-はい、したがってOrderID6が含まれます
Is7 <3-いいえ、7 <5-いいえ、7です<7-いいえ、したがってOrderID 7は、比較する指定されたリストにこれ以上値がないため含まれていません
は8<3-いいえ、は8 <5-いいえ、は8 <7-いいえ、したがってOrderID 8は、比較する指定リストにこれ以上値がないため含まれていませ
んIs 9 <3-いいえ、9 <5-いいえ、 9 <7-いいえ、したがってOrderID 9は、比較する指定されたリストにこれ以上値がないため含まれません
Is 9 <3-いいえ、は9 <5-いいえ、は9 <7-いいえ、したがってOrderID9はこれ以上値がないため含まれません比較する指定されたリスト


OrderID> ANY(3,5,7)である
OrdersからOrderIDを選択するよりも大きい場合に同じロジックを適用します

上記のクエリに対する答えは次のとおり です
。OrderID4,5,6,7,8,9,10

于 2020-04-13T16:17:36.270 に答える
1

ANYおよびALL演算子は、WHERE句またはHAVING句とともに使用されます。

サブクエリ値のいずれかが条件を満たす場合、ANY演算子はtrueを返します。

ALL演算子は、すべてのサブクエリ値が条件を満たしている場合にtrueを返します。

于 2017-11-27T11:11:45.483 に答える
1

=ANYはIN演算子と同等です。"<>、<、>、<=、または>="これらのいずれかを任意の演算子の前に配置できます。<>ANY演算子はNOTINとは異なることに注意してください。

ANYおよびALL演算子は、WHERE句またはHAVING句とともに使用されます。

サブクエリ値のいずれかが条件を満たす場合、ANY演算子はtrueを返します。

ALL演算子は、すべてのサブクエリ値が条件を満たしている場合にtrueを返します。

于 2021-02-20T06:15:02.620 に答える
0

「IN」を使用して列の値を比較する場合、あるセット{value1,value2 ...}は列の値がセットに存在する必要がありますが、いずれの場合も次のように比較します。

col.value > ANY ({value1,value2,...})

その場合、値は設定値のいずれよりも大きくなければなりません。

「ALL」の場合

col.value> ALL({value1,value2,...})

値は、セット内のすべての値よりも大きくなければなりません。

理解を深めるために、次の画像を参照してください。

于 2018-09-04T15:31:33.793 に答える
0

(in)は、指定した値のリストから値を1つずつ選択するために使用される特殊な種類の演算子です。while(any)はwhere句で使用されます。

于 2019-03-05T09:31:31.667 に答える