web-dev-qa-db-fra.com

Différence entre les opérateurs in et sql

Quelle est la différence entre les opérateurs IN et ANY en SQL? 

30
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> - Vous devez placer un opérateur =, <>, <,>, <= ou> = avant ANY.

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

Pour opérateur

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

mais avec le Dans vous ne pouvez pas utiliser =, <>, <,>, <= ou> =

28
Pranay Rana

IN-> Egal à n'importe qui dans la liste.

ANY-> Compare la valeur à chaque valeur renvoyée par la sous-requête.

ALL-> Compare la valeur à chaque valeur renvoyée par la sous-requête.

Par exemple:

IN: .__ (Q): Affichez les détails de tous les employés dont les salaires correspondent aux moins-investissements des départements?

(A): SQL> Sélectionnez Ename Sal Deptno dans Emp Where Sal IN (Sélectionnez Min (Sal) dans Emp Group by Deptno);

TOUT:

Meaans inférieur à la valeur maximale dans la liste.

(Q): Obtenir les détails de tous les employés qui gagnent moins que le plus élevé des employés, contrôlant les autres employés?

(A): SQL> Sélectionnez Empno Ename Job Sl de Emp Where Sal

N'IMPORTE QUELLE: -> Valeur supérieure à la valeur minimale indiquée dans la liste.

(Q): Obtenez les détails de tous les Emps Qui gagnent plus que le moins payé du département 10?

(A): SQL> Sélectionnez Empno Ename Job Sal à partir de Emp Où Sal> N'importe lequel (Sélectionnez Min (Sal) à partir de Emp Où Deptno 10);

TOUT: -> C'est équivalent à In Operator.

Remarque: 'Some' est également utilisé à la place de ANY.

15
Tejas Patel

Peut-être pour une meilleure compréhension, ces deux conditions sont équivalentes. C'est une question de goût que vous utilisez (à condition que le SGBDR les supporte tous les deux)

... WHERE x IN (SELECT Y FROM THE_TABLE)  
... WHERE x =ANY (SELECT Y FROM THE_TABLE) 

et ceux-ci aussi

... WHERE x NOT IN (SELECT Y FROM THE_TABLE) 
... WHERE x <>ALL (SELECT Y FROM THE_TABLE) 

En fait, mon habitude personnelle est d'utiliser IN pour l'expression de liste (comme WHERE x IN (2,4,6,8) et =ANY, resp. <>ALL pour les sous-requêtes.

10

Tout en utilisant

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

 EMPNO        SAL

  7839       5000

Il retournera un résultat équivalent à la requête:

CHOISISSEZ empno, sal FROM emp WHERE sal> 2000 AND sal> 3000 AND sal> 4000;

Tout en utilisant

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

Renvoie un résultat identique à

SELECT empno, sal DE EMP WHERE sal> 2000 OR sal> 3000 OR sal> 4000;

7
user904876

TOUT OPERATEUR DANS SQL SERVER 2008R2.

En utilisant> l'opérateur de comparaison comme exemple,> ALL signifie plus grand que chaque valeur, autrement dit plus grand que la valeur maximum. Par exemple,> ALL (1, 2, 3) signifie supérieur à 3.> ANY signifie supérieure à au moins une valeur, c'est-à-dire supérieure au minimum. Donc> ANY (1, 2, 3) signifie plus que 1.

De même,> ANY signifie que pour qu'une ligne satisfasse à la condition spécifiée dans la requête externe, la valeur de la colonne introduisant la sous-requête doit être supérieure à au moins une des valeurs de la liste des valeurs renvoyées par la sous-requête.

2
Vinoth_S

Les opérateurs ANY et ALL sont utilisés avec une clause WHERE ou HAVING.

L'opérateur ANY renvoie true si l'une des valeurs de sous-requête remplit la condition.

L'opérateur ALL renvoie true si toutes les valeurs de sous-requête remplissent la condition.

1
gady RajinikanthB

Avec ANY, vous avez besoin d'un opérateur:

WHERE X > ANY (SELECT Y FROM Z)

Avec IN, vous ne pouvez pas. C'est toujours tester pour l'égalité.

1
Thomas Mueller

Lorsque nous comparons une valeur de colonne en utilisant "IN", un ensemble dit {value1,value2 ...}, alors la valeur de la colonne doit être présente dans l'ensemble, mais dans le cas de ANY, nous comparons comme suit:

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

alors la valeur doit être supérieure à l'une quelconque de la valeur définie.

en cas de "ALL"

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

la valeur doit être supérieure à toutes les valeurs de l'ensemble.

Reportez-vous aux images suivantes pour une meilleure compréhension:

0
Lipsa Chhotray