web-dev-qa-db-ja.com

inとSQLの演算子の違い

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

34
Jagan
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>
SQL> SELECT *
  2  FROM employee
  3  WHERE salary > ANY (2000, 3000, 4000);

For演算子

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

ただし、Inでは、=、<>、<、>、<=、または> =は使用できません

31
Pranay Rana

IN->リスト内のいずれかと等しい。

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

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

例えば:

IN:(Q):給与が部門の最小投資と一致するすべての従業員の詳細を表示しますか?

(A):SQL> EmpからEname Sal Deptnoを選択し、Sal IN(DeptnoからEmp GroupからMin(Sal)を選択);

どれか:

リスト内の最大値未満の平均。

(Q):他の従業員を管理している最高の収入の従業員よりも少ない収入を得ているすべての従業員の詳細を取得しますか?

(A):SQL> Select Empno Ename Job Sl From Emp Where Sal

ANY:->リストの最小値を超える手段。

(Q):部門10の最低賃金以上の収益を上げているすべてのEmpsの詳細を取得

(A):SQL> Emp Where Ename Job Sal from Emp Where Sal> Any(Select Min(Sal)From Emp Where Deptno 10);

ANY:-> In Operatorと同等です。

注:「一部」は、任意の代わりに使用されます。

17
Tejas Patel

おそらく、より良い理解のために、これらの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_を使用します。

10

すべてを使用しながら

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;

7
Mansi Raval

SQL Server 2008R2のすべての演算子。

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

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

2
Vinoth_S

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

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

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

1

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

WHERE X > ANY (SELECT Y FROM Z)

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

1
Thomas Mueller

「IN」を使用して列の値を比較するとき、いくつかのセットは{value1,value2 ...}その後、列の値がセットに存在する必要がありますが、ANYの場合は次のように比較します。

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

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

「ALL」の場合

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

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

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

0
Lipsa Chhotray

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

0
Baboo Lal