Maison > base de données > tutoriel mysql > Comment puis-je corriger l'erreur « La sous-requête renvoie plus d'une ligne » dans SQL ?

Comment puis-je corriger l'erreur « La sous-requête renvoie plus d'une ligne » dans SQL ?

Susan Sarandon
Libérer: 2024-12-03 14:16:19
original
921 Les gens l'ont consulté

How Can I Fix the

Surmonter l'erreur « La sous-requête renvoie plus d'une ligne »

Définition de critères avec plusieurs valeurs de sous-requête

Rencontrer l'erreur « La sous-requête renvoie plus d'une ligne » "L'erreur lors de la tentative de définition de critères basés sur les résultats d'une sous-requête peut être frustrante. Cette erreur se produit lorsque votre sous-requête renvoie plusieurs lignes, mais que votre requête principale n'en attend qu'une.

Pour résoudre ce problème, il est crucial de comprendre la différence entre l'opérateur d'égalité (=) et l'opérateur IN. L'opérateur d'égalité ne peut comparer que deux valeurs et s'attend à ce que la sous-requête renvoie une seule valeur. D'autre part, l'opérateur IN vous permet de comparer une valeur à plusieurs valeurs ou à un ensemble de valeurs renvoyées par une sous-requête.

Utilisation de l'opérateur IN

Lorsque votre sous-requête renvoie plusieurs lignes, vous devez utiliser l'opérateur IN pour comparer la valeur de votre requête principale à ces multiples valeurs. La syntaxe est la suivante :

SELECT *
FROM table
WHERE id IN (subquery)
Copier après la connexion

Dans cet exemple, la sous-requête renverra plusieurs lignes et la requête principale vérifiera si la colonne id correspond à l'une de ces valeurs de ligne.

Exemple Utilisation

Considérez le scénario suivant :

  • Requête 1 : SELECT id FROM table1 renvoie plusieurs lignes avec les valeurs 1, 2 et 3.
  • Requête 2 : SELECT * FROM table2 WHERE id = (SELECT id FROM table1) entraînera l'erreur car la sous-requête renvoie plusieurs lignes.

Pour résoudre cette erreur, modifiez la requête 2 pour utiliser l'opérateur IN :

SELECT * 
FROM table2 
WHERE id IN (SELECT id FROM table1)
Copier après la connexion

Maintenant, la requête 2 récupérera correctement les enregistrements de la table2 où la colonne id correspond à l'une des valeurs renvoyées par la sous-requête.

Conclusion

Comprendre la distinction entre l'opérateur d'égalité et l'opérateur IN est essentiel lorsque l'on travaille avec des sous-requêtes. En utilisant l'opérateur IN, vous pouvez surmonter l'erreur « la sous-requête renvoie plus d'une ligne » et définir efficacement des critères basés sur plusieurs valeurs obtenues à partir d'une sous-requête.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal