Résolution de l'erreur « la sous-requête renvoie plus d'une ligne »
Lorsque vous traitez des sous-requêtes, il est crucial de comprendre leur potentiel à renvoyer plusieurs rangées. Cela peut entraîner des erreurs s'il n'est pas géré correctement, comme dans le cas de l'erreur « La sous-requête renvoie plus d'une ligne ».
Sous-requêtes renvoyant plusieurs valeurs
Le point crucial Ce problème réside dans le fait que la sous-requête en question renvoie plusieurs lignes. Lorsque des conditions sont spécifiées dans la requête principale qui dépendent des valeurs obtenues à partir de la sous-requête, cette erreur se produit.
Utilisation de IN pour plusieurs valeurs
Pour résoudre ce problème, le Un opérateur IN doit être employé. Contrairement à l'opérateur d'égalité (=), qui attend une valeur unique, IN permet de spécifier plusieurs valeurs. La syntaxe pour utiliser IN avec une sous-requête est :
select * <br>from table<br>where id IN (sous-requête);<br>
Dans cet exemple, la sous-requête renverra plusieurs valeurs et la colonne id de la table sera comparée à l'une d'entre elles. valeurs.
Exemple :
Par exemple, considérons les requêtes suivantes :
SELECT *<br>FROM Students<br> OÙ Notes = (SELECT MAX(Notes) FROM Students); -- Renvoie une seule valeur</p> <p>SELECT *<br>FROM Students<br>WHERE Marks IN</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> (SELECT Marks FROM Students ORDER BY Marks DESC LIMIT 10); -- Returns 10 values
Dans la première requête, la sous-requête renvoie la marque maximale, qui est une valeur unique. Par conséquent, l’opérateur d’égalité (=) peut être utilisé. Toutefois, dans la deuxième requête, la sous-requête renvoie les 10 premières marques, qui sont plusieurs valeurs. Par conséquent, l'opérateur IN est requis.
En employant IN, vous pouvez gérer efficacement les sous-requêtes qui renvoient plusieurs lignes, en vous assurant que les critères de la requête principale sont remplis de manière appropriée, en résolvant le problème « la sous-requête renvoie plus d'une ligne ». erreur efficacement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!