Comment utiliser l’opérateur SQL IN : guide des techniques de filtrage efficaces
L’opérateur SQL IN permet de filtrer les résultats d’une requête pour ne conserver que les lignes qui respectent des conditions données. Découvrez tout son potentiel et ses alternatives.
L’opérateur SQL IN est un outil pratique pour filtrer des données à partir d’un ensemble de valeurs. Intégré à des requêtes longues, l’opérateur IN aide à simplifier des requêtes complexes et améliore leur lisibilité.
Si vous débutez dans les métiers de la donnée, nous vous recommandons les cours Introduction to SQL et SQL Fundamentals de DataCamp pour apprendre les bases du filtrage des données en SQL. Pour un mémo rapide, consultez notre aide‑mémoire SQL Basics.
Qu’est‑ce que l’opérateur SQL IN ?
L’opérateur SQL IN est un puissant levier pour filtrer les données dans vos requêtes. Il affine les résultats en ne renvoyant que les lignes qui répondent aux conditions spécifiées.
L’opérateur IN s’utilise après la clause WHERE pour gérer plusieurs conditions. Il est donc pertinent lorsque la colonne filtrée peut prendre différentes valeurs.
-- Sélectionner les colonnes employee_id, employee_name et departmentSELECT employee_id, employee_name, department
FROM employees
-- Ne conserver que les employés dont le département est 'Sales' ou 'HR'WHERE department IN('Sales','HR');Propulsé par
Dans l’exemple ci‑dessus, nous sélectionnons les colonnes employee_id, employee_name et department de la table employees. Nous ne retournons toutefois que les lignes où les employés appartiennent aux départements Sales et HR.
L’opérateur IN peut filtrer différents types SQL, notamment des chaînes, des nombres et des dates. Assurez‑vous toujours que la colonne de référence possède le type de données approprié lors du filtrage.
Syntaxe de l’opérateur SQL IN
La syntaxe de IN est simple pour filtrer des valeurs. Il s’utilise dans la clause WHERE afin de filtrer plusieurs valeurs sur une colonne. La syntaxe générale de IN est la suivante.
-- Sélectionner les colonnes à récupérerSELECT column_name(s)-- Indiquer la table depuis laquelle récupérer les donnéesFROM table_name
-- Ne conserver que les lignes dont la valeur de colonne correspond à l'une des valeurs listéesWHERE column_name IN(value1, value2,...);Propulsé par
Voici un exemple concret d’utilisation de IN dans une clause WHERE.
-- Sélectionner les colonnes employee_id, employee_name et departmentSELECT employee_id, employee_name, department
FROM employees
-- Ne conserver que les employés dont le département est 'Sales' et 'HR'WHERE department IN('Sales','HR');Propulsé par
Points importants à retenir
L’opérateur IN s’emploie dans la clause WHERE d’une instruction SELECT. Ce positionnement permet de filtrer les lignes selon plusieurs valeurs. Utilisé dans une requête SQL, IN simplifie les écritures complexes et les rend plus lisibles.
L’opérateur IN est standard sur la plupart des bases de données, notamment SQL Server, PostgreSQL, MySQL et Oracle. Il est recommandé d’écrire IN en majuscules pour une meilleure lisibilité.
Cas d’usage courants de l’opérateur IN
L’opérateur SQL IN intervient dans de nombreux scénarios d’analyse. Passons en revue les usages les plus fréquents : filtrage de données, gestion de multiples valeurs et utilisation avec des sous‑requêtes.
Filtrer des données
L’opérateur IN filtre les enregistrements et renvoie un ensemble de valeurs spécifiées. Par exemple, la requête ci‑dessous sélectionne toutes les colonnes de la table employees et retourne les lignes des départements Sales, HR et IT.
-- Sélectionner toutes les colonnes de la table employeesSELECT employee_id, employee_name, department
FROM employees
-- Ne conserver que les départements 'Sales', 'HR' et 'IT'WHERE department IN('Sales','HR','IT');Propulsé par
Gérer plusieurs valeurs
L’opérateur IN permet aussi de filtrer sur plusieurs valeurs. C’est particulièrement utile lorsque vous auriez autrement enchaîné plusieurs conditions OR. IN offre ainsi une écriture plus concise et lisible.
Voici à quoi ressemble la requête avec l’opérateur OR au lieu de IN.
-- Requête principale pour sélectionner employee_id et name depuis la table employeesSELECT employee_id, name
FROM employees
-- Filtrer les employés selon plusieurs noms de département avec des conditions ORWHERE department ='Sales'OR department ='Marketing'OR department ='HR';Propulsé par
Voici la même requête avec l’opérateur IN. Remarquez la simplicité obtenue en supprimant les répétitions de OR.
-- Requête principale pour sélectionner employee_id et name depuis la table employeesSELECT employee_id, name
FROM employees
-- Filtrer les employés sur une liste de départements avec l'opérateur INWHERE department IN('Sales','Marketing','HR');Propulsé par
Sous‑requêtes
Vous pouvez également utiliser IN pour filtrer des résultats à partir d’une sous‑requête. Cette approche permet de baser le filtrage sur une autre requête ou des données liées. Dans l’exemple ci‑dessous, la sous‑requête sélectionne le department_id du département Sales depuis la table departments. La requête principale retourne alors les employee_id et noms depuis employees, filtrés selon la sous‑requête.
-- Requête principale pour sélectionner employee_id et name depuis la table employeesSELECT employee_id, name
FROM employees
-- Filtrer les employés selon department_id grâce à une sous-requêteWHERE department_id IN(-- Sous-requête pour récupérer le department_id du département "Sales"SELECT department_id
FROM departments
WHERE department_name ='Sales');Propulsé par
Limites et alternatives
Même si l’opérateur IN est simple à utiliser, il présente certaines limites, notamment :
Performances avec de longues listes : utiliser IN avec de grandes listes de valeurs peut dégrader les performances et ralentir l’exécution de la requête.
Gestion des valeurs NULL :IN ne gère pas efficacement les valeurs NULL et peut produire des résultats inattendus, car NULL n’est pas présent dans la liste de valeurs.
Flexibilité limitée :IN montre ses limites sur de larges jeux de données impliquant de multiples colonnes. On ne peut filtrer qu’un nombre restreint de colonnes via des sous‑requêtes.
Pour contourner ces limites, plusieurs alternatives existent :
Utiliser l’opérateur EXISTS
L’opérateur EXISTS vérifie la présence d’enregistrements retournés par une sous‑requête. Bien employé, il est performant et souvent plus rapide.
-- Sélectionner employee_id et employee_name pour les employés de départements situés à New York avec EXISTSSELECT employee_id, employee_name
FROM employees e
-- Vérifier l'existence d'une ligne dans la table departmentsWHEREEXISTS(-- SELECT 1 sert d'indicateur ; on vérifie simplement l'existenceSELECT1FROM departments d
-- Faire correspondre department_id entre employees et departmentsWHERE d.department_id = e.department_id
-- Ne conserver que les départements situés à New YorkAND d.location ='New York');Propulsé par
Utiliser JOIN
La clause SQL JOIN est efficace pour des filtrages plus complexes, notamment lorsque les données proviennent de colonnes liées entre plusieurs tables. Dans l’exemple ci‑dessous, la clause JOIN relie les tables employees et departments sur department_id pour filtrer les employés travaillant à New York.
-- Sélectionner employee_id et employee_name pour les employés de départements situés à New York avec JOINSELECT e.employee_id, e.employee_name
FROM employees e
-- Joindre la table employees à la table departments sur department_idJOIN departments d ON e.department_id = d.department_id
-- Ne conserver que les départements situés à New YorkWHERE d.location ='New York';Propulsé par
Utiliser des CTE (Common Table Expressions) ou des tables temporaires
Si vous travaillez avec de longues listes, envisagez d’utiliser des CTE pour stocker les valeurs avant de requêter. Cette méthode améliore les performances et la lisibilité.
-- Définir un CTE (Common Table Expression) pour stocker la liste des department_id situés à New YorkWITH DepartmentList AS(SELECT department_id
FROM departments
WHERE location ='New York')-- Sélectionner employee_id et employee_name pour les employés appartenant aux départements listés dans le CTESELECT e.employee_id, e.employee_name
FROM employees e
-- Ne conserver que les employés dont le department_id figure dans la liste issue du CTEWHERE e.department_id IN(SELECT department_id FROM DepartmentList);Propulsé par
Pour aller plus loin sur les techniques avancées de filtrage, suivez le parcours carrière Associate Data Analyst in SQL de DataCamp. Vous pouvez aussi consulter le cours Intermediate SQL Server, qui comprend un chapitre sur les expressions de table communes (CTE) et d’autres sujets avancés.
Conclusion
Maîtriser l’opérateur SQL IN est essentiel pour tout praticien de la donnée, car il permet de filtrer et de transformer les données pendant l’analyse. Pour renforcer votre pratique de IN en SQL, entraînez‑vous sur différents jeux de données.
Pour passer à un niveau intermédiaire, nous vous recommandons le cours Reporting in SQL pour explorer d’autres techniques de requêtage avancées. Par ailleurs, la SQL Associate Certification vous aidera à vous démarquer en attestant votre maîtrise pratique de SQL pour des analyses poussées.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Découvrez les fonctions lambda Python, leur utilité et quand les utiliser. Comprend des exemples pratiques et des bonnes pratiques pour une mise en œuvre efficace.
Débloquez tout le potentiel de vos données grâce à des requêtes SQL avancées et préparez des jeux de données robustes avec PostgreSQL pour la data science.
L’opérateur SQL
INest un outil pratique pour filtrer des données à partir d’un ensemble de valeurs. Intégré à des requêtes longues, l’opérateurINaide à simplifier des requêtes complexes et améliore leur lisibilité.Si vous débutez dans les métiers de la donnée, nous vous recommandons les cours Introduction to SQL et SQL Fundamentals de DataCamp pour apprendre les bases du filtrage des données en SQL. Pour un mémo rapide, consultez notre aide‑mémoire SQL Basics.
Qu’est‑ce que l’opérateur SQL IN ?
L’opérateur SQL
INest un puissant levier pour filtrer les données dans vos requêtes. Il affine les résultats en ne renvoyant que les lignes qui répondent aux conditions spécifiées.L’opérateur
INs’utilise après la clauseWHEREpour gérer plusieurs conditions. Il est donc pertinent lorsque la colonne filtrée peut prendre différentes valeurs.Dans l’exemple ci‑dessus, nous sélectionnons les colonnes
employee_id,employee_nameetdepartmentde la tableemployees. Nous ne retournons toutefois que les lignes où les employés appartiennent aux départementsSalesetHR.L’opérateur
INpeut filtrer différents types SQL, notamment des chaînes, des nombres et des dates. Assurez‑vous toujours que la colonne de référence possède le type de données approprié lors du filtrage.Syntaxe de l’opérateur SQL IN
La syntaxe de
INest simple pour filtrer des valeurs. Il s’utilise dans la clauseWHEREafin de filtrer plusieurs valeurs sur une colonne. La syntaxe générale deINest la suivante.Voici un exemple concret d’utilisation de
INdans une clauseWHERE.Points importants à retenir
L’opérateur
INs’emploie dans la clauseWHEREd’une instructionSELECT. Ce positionnement permet de filtrer les lignes selon plusieurs valeurs. Utilisé dans une requête SQL,INsimplifie les écritures complexes et les rend plus lisibles.L’opérateur
INest standard sur la plupart des bases de données, notamment SQL Server, PostgreSQL, MySQL et Oracle. Il est recommandé d’écrireINen majuscules pour une meilleure lisibilité.Cas d’usage courants de l’opérateur IN
L’opérateur SQL
INintervient dans de nombreux scénarios d’analyse. Passons en revue les usages les plus fréquents : filtrage de données, gestion de multiples valeurs et utilisation avec des sous‑requêtes.Filtrer des données
L’opérateur
INfiltre les enregistrements et renvoie un ensemble de valeurs spécifiées. Par exemple, la requête ci‑dessous sélectionne toutes les colonnes de la tableemployeeset retourne les lignes des départementsSales,HRetIT.Gérer plusieurs valeurs
L’opérateur
INpermet aussi de filtrer sur plusieurs valeurs. C’est particulièrement utile lorsque vous auriez autrement enchaîné plusieurs conditionsOR.INoffre ainsi une écriture plus concise et lisible.Voici à quoi ressemble la requête avec l’opérateur
ORau lieu deIN.Voici la même requête avec l’opérateur
IN. Remarquez la simplicité obtenue en supprimant les répétitions deOR.Sous‑requêtes
Vous pouvez également utiliser
INpour filtrer des résultats à partir d’une sous‑requête. Cette approche permet de baser le filtrage sur une autre requête ou des données liées. Dans l’exemple ci‑dessous, la sous‑requête sélectionne ledepartment_iddu départementSalesdepuis la tabledepartments. La requête principale retourne alors lesemployee_idet noms depuisemployees, filtrés selon la sous‑requête.Limites et alternatives
Même si l’opérateur
INest simple à utiliser, il présente certaines limites, notamment :INavec de grandes listes de valeurs peut dégrader les performances et ralentir l’exécution de la requête.INne gère pas efficacement les valeursNULLet peut produire des résultats inattendus, carNULLn’est pas présent dans la liste de valeurs.INmontre ses limites sur de larges jeux de données impliquant de multiples colonnes. On ne peut filtrer qu’un nombre restreint de colonnes via des sous‑requêtes.Pour contourner ces limites, plusieurs alternatives existent :
Utiliser l’opérateur EXISTS
L’opérateur
EXISTSvérifie la présence d’enregistrements retournés par une sous‑requête. Bien employé, il est performant et souvent plus rapide.Utiliser JOIN
La clause SQL
JOINest efficace pour des filtrages plus complexes, notamment lorsque les données proviennent de colonnes liées entre plusieurs tables. Dans l’exemple ci‑dessous, la clauseJOINrelie les tables employees et departments surdepartment_idpour filtrer les employés travaillant à New York.Utiliser des CTE (Common Table Expressions) ou des tables temporaires
Si vous travaillez avec de longues listes, envisagez d’utiliser des CTE pour stocker les valeurs avant de requêter. Cette méthode améliore les performances et la lisibilité.
Pour aller plus loin sur les techniques avancées de filtrage, suivez le parcours carrière Associate Data Analyst in SQL de DataCamp. Vous pouvez aussi consulter le cours Intermediate SQL Server, qui comprend un chapitre sur les expressions de table communes (CTE) et d’autres sujets avancés.
Conclusion
Maîtriser l’opérateur SQL
INest essentiel pour tout praticien de la donnée, car il permet de filtrer et de transformer les données pendant l’analyse. Pour renforcer votre pratique deINen SQL, entraînez‑vous sur différents jeux de données.Pour passer à un niveau intermédiaire, nous vous recommandons le cours Reporting in SQL pour explorer d’autres techniques de requêtage avancées. Par ailleurs, la SQL Associate Certification vous aidera à vous démarquer en attestant votre maîtrise pratique de SQL pour des analyses poussées.