Maison >base de données >tutoriel mysql >Comment gérer les sous-requêtes renvoyant plusieurs lignes ?

Comment gérer les sous-requêtes renvoyant plusieurs lignes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 08:19:10261parcourir

How to Handle Subqueries Returning More Than One Row?

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>
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn