Recherche de site Web

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.