Pouvons-nous utiliser une sous-requête dans la clause WHERE dans MySQL ?
Cet article discutera de :
- Pouvons-nous utiliser une sous-requête dans la clause WHERE dans MySQL ?
- Comment utiliser une sous-requête dans la clause WHERE de MySQL ?
- Comment utiliser une sous-requête MySQL avec des opérateurs de comparaison dans la clause WHERE ?
- Comment utiliser une sous-requête MySQL dans la clause WHERE avec les opérateurs « IN » ou « NOT IN »?
Pouvons-nous utiliser une sous-requête dans la clause WHERE dans MySQL ?
Oui, nous pouvons utiliser la sous-requête dans la clause « WHERE » dans MySQL. La clause « WHERE » peut extraire des enregistrements qui répondent aux conditions spécifiées.
Syntaxe
La syntaxe générale de la sous-requête de la clause WHERE est indiquée ci-dessous :
SELECT * FROM <table1> WHERE col1 = (SELECT <col1> FROM <table2> WHERE <condition>)Maintenant, utilisons la sous-requête dans la clause WHERE pour mieux comprendre!
Étape 1 : Accéder à MySQL
Tout d'abord, connectez-vous au serveur MySQL en exécutant la requête “mysql” avec le nom d'utilisateur et le mot de passe par défaut :
mysql -u root -pÉtape 2 : Afficher les bases de données
Ensuite, utilisez la commande “SHOW” pour lister toutes les bases de données :
SHOW DATABASES;Nous avons sélectionné la base de données “mynewdb” pour un traitement ultérieur :
Étape 3 : Changer de base de données
Exécutez l’instruction “USE” pour changer de base de données :
USE mynewdb;Étape 4 : Voir la table de la base de données
Maintenant, exécutez l'instruction “SELECT” pour lister le contenu de la table :
SELECT * FROM student;Ici, nous avons dressé la table des étudiants :
De même, listez le contenu de la table « student_marks » :
SELECT * FROM student_marks;Maintenant, nous allons appliquer la clause OÙ avec des sous-requêtes sur la table énumérée ci-dessus pour obtenir les enregistrements souhaités.
Comment utiliser une sous-requête dans la clause WHERE de MySQL ?
Exécutez l'instruction “SELECT” avec une clause “WHERE” et une instruction “SELECT” comme sous-requête :
SELECT FirstName, City FROM student WHERE Std = (SELECT Std FROM student WHERE LastName='Khan');Ici :
- La déclaration “SÉLECTIONNER” est utilisée pour sélectionner des données à partir de bases de données.
- "Prénom, Ville" sont les colonnes du tableau.
- "La clause FROM est utilisée pour extraire certaines lignes de la table."
- "étudiant" est le nom de notre table.
- “LA clause ” est utilisée pour filtrer les enregistrements qui remplissent des conditions spécifiées.
- “Std ” est le nom de la colonne qui contient les identifiants des étudiants.
- "NomDeFamille='Khan'" est également notre colonne de tableau.
Dans la commande ci-dessus, d'abord, la sous-requête sera exécutée. Après cela, la requête externe s'exécutera. Selon la sortie fournie, seul un enregistrement remplit la condition spécifiée :
Comment utiliser une sous-requête MySQL avec des opérateurs de comparaison dans la clause WHERE ?
Nous pouvons également utiliser différents opérateurs de comparaison pour comparer un seul résultat renvoyé par la sous-requête et l'expression dans la clause « WHERE ». Ces opérateurs de comparaison sont « > » plus grand que, « = » égal, et « < » moins que.
Exemple 1 : Utilisation de l'opérateur de comparaison “> ” dans la clause “WHERE” avec une sous-requête
La commande ci-dessous renvoie les enregistrements de ces étudiants dont les notes sont supérieures à “70” utilisant la sous-requête :
SELECT * FROM Student_marks WHERE std IN (SELECT Std FROM Student_marks Where Marks >70);Dans cette requête :
- Tout d'abord, il déterminera le dossier de ces étudiants dont les notes sont supérieures à « 70 » en utilisant la sous-requête.
- Après cela, la requête externe renverra les notes avec des détails dont les identifiants d'étudiant se trouvent dans l'ensemble de résultats renvoyé par la sous-requête exécutée :
Exemple 2 : Utilisation de l'opérateur de comparaison “< ” (inférieur à) dans la clause “WHERE” avec une sous-requête
La commande suivante renverra les détails des étudiants dont les notes sont inférieures à “70” en utilisant la sous-requête dans la clause “WHERE” :
SELECT * FROM Student_marks WHERE std IN (SELECT Std FROM Student_marks Where Marks < 70);Selon la déclaration exécutée, seul un étudiant a moins de « 70 » marks :
Exemple 3 : Utilisation de l’opérateur de comparaison égal “= ” dans la clause “WHERE” avec une sous-requête
De même, la commande ci-dessous obtiendra les détails des étudiants dont les notes sont égales à “78 ” en utilisant l’instruction “SELECT ” comme sous-requête :
SELECT * FROM Student_marks WHERE std IN (SELECT Std FROM Student_marks Where Marks = 78);Comment utiliser une sous-requête MySQL dans la clause WHERE avec les opérateurs « IN » ou « NOT IN »?
Si la sous-requête spécifiée renvoie plusieurs valeurs, nous devons utiliser la clause « WHERE » avec l'opérateur « IN » ou « NOT IN ».
Supposons que nous ayons une table nommée « étudiant » qui contient les données suivantes :
La table « student_marks » contient les enregistrements ci-dessous :
Exemple 1 : Utilisation de l'opérateur « NOT IN » dans la clause « WHERE » avec une sous-requête
Supposons que nous ayons une table nommée « étudiant » qui contient les données de l'étudiant, telles que « Prénom », « Nom de famille », « Ville », « Adresse permanente » et d'autres détails. Nous voulons obtenir le « Prénom » et la « Ville » de la table « étudiant » où les identifiants des étudiants n'existent pas dans la sous-requête. Dans une sous-requête, nous récupérons l'enregistrement des étudiants avec des noms de villes différents :
SELECT FirstName, City FROM student WHERE Std NOT IN (SELECT DISTINCT City FROM student);Ici, l'énoncé “DISTINCT” est utilisé pour renvoyer uniquement des valeurs différentes :
Exemple 2 : Utilisation de l'opérateur “IN” dans la clause “WHERE” avec une sous-requête
Nous avons une table nommée “student_marks” qui contient les données des étudiants, telles que “Std”, “FirstName”, “LastName” et “Marks”. Nous devons obtenir le “FirstName” de la table “student_marks” où les notes des étudiants existent dans la sous-requête. Dans une sous-requête, nous obtenons les notes de ces étudiants qui diffèrent les uns des autres.
Pour ce faire, exécutez l'instruction ci-dessous :
SELECT Std, FirstName FROM student_marks WHERE Marks IN (SELECT DISTINCT Marks FROM student_marks);C'est tout au sujet de l'utilisation d'une sous-requête dans la clause WHERE en MySQL.
Conclusion
Oui, vous pouvez utiliser la sous-requête dans la clause WHERE de MySQL. Nous pouvons utiliser des opérateurs de comparaison, tels que inférieur à, égal et supérieur à, dans la sous-requête de la clause WHERE. De plus, les opérateurs IN et NOT IN peuvent être utilisés dans la sous-requête. Cet article a démontré la notion de sous-requête dans la clause WHERE dans MySQL.












