SQL IN

L’opérateur logique IN dans SQL  s’utilise avec la commande WHERE pour vérifier si une colonne est égale à une des valeurs comprise dans set de valeurs déterminés. C’est une méthode simple pour vérifier si une colonne est égale à une valeur OU une autre valeur OU une autre valeur et ainsi de suite, sans avoir à utiliser de multiple fois l’opérateur OR.

Syntaxe

Pour chercher toutes les lignes où la colonne “nom_colonne” est égale à ‘valeur 1’ OU ‘valeur 2’ ou ‘valeur 3’, il est possible d’utiliser la syntaxe suivante:

SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... )

A savoir : entre les parenthèses il n’y a pas de limite du nombre d’arguments. Il est possible d’ajouter encore d’autres valeurs.

Cette syntaxe peut être associée à l’opérateur NOT pour recherche toutes les lignes qui ne sont pas égales à l’une des valeurs stipulées.

Simplicité de l’opérateur IN

La syntaxe utilisée avec l’opérateur est plus simple que d’utiliser une succession d’opérateur OR. Pour le montrer concrètement avec un exemple, voici 2 requêtes qui retournerons les mêmes résultats, l’une utilise l’opérateur IN, tandis que l’autre utilise plusieurs OR.

Requête avec plusieurs OR :

SELECT prenom
FROM utilisateur
WHERE prenom = 'Maurice' OR prenom = 'Marie' OR prenom = 'Thimoté'

Requête équivalent avec l’opérateur IN :

SELECT prenom
FROM utilisateur
WHERE prenom IN ( 'Maurice', 'Marie', 'Thimoté' )

Exemple

Imaginons une table “adresse” qui contient une liste d’adresse associée à des utilisateurs d’une application.

idid_utilisateuraddr_rueaddr_code_postaladdr_ville
12335 Rue Madeleine Pelletier25250Bournois
24321 Rue du Moulin Collet75006Paris
36528 Avenue de Cornouaille27220Mousseaux-Neuville
46741 Rue Marcel de la Provoté76430Graimbouville
56818 Avenue de Navarre75009Paris

Si l’ont souhaite obtenir les enregistrements des adresses de Paris et de Graimbouville, il est possible d’utiliser la requête suivante:

SELECT *
FROM adresse
WHERE addr_ville IN ( 'Paris', 'Graimbouville' )

Résultats :

idid_utilisateuraddr_rueaddr_code_postaladdr_ville
24321 Rue du Moulin Collet75006Paris
46741 Rue Marcel de la Provoté76430Graimbouville
56818 Avenue de Navarre75009Paris

Cours recommandés

Partager