MySQL IN
Summary : dans ce tutoriel, vous apprendrez à utiliser l’opérateur MySQL IN
pour déterminer si une valeur spécifiée correspond à n’importe quelle valeur dans une liste ou une sous-requête.
Introduction à l’opérateur IN de MySQL
L’opérateur IN
vous permet de déterminer si une valeur spécifiée correspond à toute valeur dans un ensemble de valeurs ou retournée par une sous-requête.
Les éléments suivants illustrent la syntaxe de l’opérateur IN
:
Code language: SQL (Structured Query Language) (sql)SELECT column1,column2,...FROM table_nameWHERE (expr|column_1) IN ('value1','value2',...);
Examinons la requête plus en détail :
- Utiliser un
column
ou une expression (expr
) avec l’opérateurIN
dans la clauseWHERE
. - Séparer les valeurs de la liste par des virgules (,).
L’opérateur IN
renvoie 1 si la valeur de la column_1
ou le résultat de l’expression expr
est égal à n’importe quelle valeur de la liste, sinon, il renvoie 0.
Lorsque les valeurs de la liste sont toutes des constantes, MySQL effectue les étapes suivantes :
- D’abord, évaluer les valeurs en fonction du type de l’expression
column_1
ou du résultat de l’expressionexpr
. - Deuxièmement, trier les valeurs.
- Troisièmement, rechercher la valeur en utilisant l’algorithme de recherche binaire. Par conséquent, une requête qui utilise l’opérateur
IN
avec une liste de constantes s’exécute très rapidement.
Notez que si la expr
ou toute valeur de la liste est NULL
, l’opérateur IN
renvoie NULL
.
Vous pouvez combiner l’opérateur IN
avec l’opérateur NOT
pour déterminer si une valeur ne correspond à aucune valeur dans une liste ou une sous-requête. Et vous pouvez également utiliser l’opérateur IN
dans la clause WHERE
d’autres instructions telles que UPDATE
, et DELETE
.
Exemples de l’opérateur IN de MySQL
Mettons-nous en pratique avec quelques exemples d’utilisation de l’opérateur IN
. Consultez le tableau suivant offices
de la base de données exemple:
Si vous voulez trouver les bureaux qui se trouvent aux États-Unis. et en France, vous pouvez utiliser l’opérateur IN
comme la requête suivante :
Code language: SQL (Structured Query Language) (sql)SELECT officeCode, city, phone, countryFROM officesWHERE country IN ('USA' , 'France');
Essayez-le
Vous pouvez obtenir le même résultat avec l’opérateur OR
comme la requête suivante :
Code language: SQL (Structured Query Language) (sql)SELECT officeCode, city, phoneFROM officesWHERE country = 'USA' OR country = 'France';
Essayez-le
Dans le cas où la liste comporte de nombreuses valeurs, vous devez construire une très longue déclaration avec plusieurs OR
opérateurs. Par conséquent, l’opérateur IN
vous permet de raccourcir la requête et de la rendre plus lisible.
Pour obtenir les bureaux qui ne sont pas situés aux États-Unis et en France, vous utilisez NOT IN
dans la clause WHERE
comme suit :
Code language: SQL (Structured Query Language) (sql)SELECT officeCode, city, phoneFROM officesWHERE country NOT IN ('USA' , 'France');
Essayez-le