Vous cherchez à filtrer vos données SQL avec précision?
Sans une bonne compréhension des sous-requêtes et des opérateurs, vous risquez de ne pas tirer pleinement parti de vos données.
Cet article explore l’utilisation des sous-requêtes SQL, avec des exemples concrets des opérateurs IN et NOT IN, pour améliorer vos requêtes.
Appréhendez les fondamentaux du langage SQL pour savoir assimiler ses fonctions standards.

Syntaxe des sous-requêtes SQL
SELECT [DISTINCT] {*, [champ1 [AS] alias1, ...]}
FROM nom_table
WHERE champ [NOT] IN (sous-requête);
Explication :
- SELECT :Vous pouvez choisir d’extraire toutes les colonnes (*) ou des colonnes spécifiques.
- DISTINCT :Cette option est utilisée pour éliminer les doublons des résultats.
- FROM nom_table :Indique la table d’où vous souhaitez extraire les données.
- WHERE champ :Vous spécifiez un champ sur lequel vous voulez appliquer la condition.
- [NOT] IN (sous-requête) :L’opérateur IN est utilisé pour vérifier si une valeur est présente dans l’ensemble des résultats retournés par la sous-requête. En ajoutant NOT, vous pouvez obtenir les valeurs qui ne figurent pas dans cet ensemble.
Sous-requête SQL multilignes : Exemple
- Avec l’opérateur NOT IN
Dans cet exemple, vous souhaitez sélectionner tous les clients qui n’ont pas passé de commandes. Vous utilisez une sous-requête multilignes pour obtenir tous les code_client des commandes, puis vous comparez ces valeurs avec ceux des clients.
SELECT *
FROM clients
WHERE code_client NOT IN (SELECT code_client FROM commandes);
Explication :
- La sous-requête (SELECT code_client FROM commandes) récupère tous les identifiants des clients qui ont passé des commandes.
- La condition WHERE code_client NOT IN (…) vérifie que le code client de chaque enregistrement de la table clients n’est pas présent dans le résultat de la sous-requête.
- La requête principale retourne tous les détails des clients qui n’ont pas de commandes associées.
Résultat affiché :
Après l’exécution de cette requête, vous obtiendrez une liste des clients qui n’ont pas passé de commandes.
- Avec l’opérateur IN
Maintenant, voyons un exemple avec l’opérateur IN. Supposons que vous souhaitiez obtenir tous les clients qui ont passé des commandes. Vous pouvez utiliser la requête suivante :
SELECT *
FROM clients
WHERE code_client IN (SELECT code_client FROM commandes);
Explication :
- La sous-requête (SELECT code_client FROM commandes) récupère tous les identifiants des clients qui ont passé des commandes.
- La condition WHERE code_client IN (…) vérifie que le code client de chaque enregistrement de la table clients est présent dans le résultat de la sous-requête.
- La requête principale retourne tous les détails des clients qui ont des commandes associées.
Résultat affiché :
Après l’exécution de cette requête, vous obtiendrez une liste des clients qui ont passé des commandes.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment utiliser une sous-requête SQL ?
Quelle est la différence entre IN et NOT IN en SQL ?
Comment écrire une sous-requête SQL avec NOT IN ?
Quand utiliser une sous-requête multilignes ?
Pourquoi utiliser DISTINCT dans une requête SQL ?
Conclusion
L’utilisation des sous-requêtes et des opérateurs IN et NOT IN en SQL est essentielle pour gérer efficacement les données. Quelle autre fonctionnalité SQL aimeriez-vous explorer pour optimiser vos requêtes?