Maison >base de données >tutoriel mysql >Erreur MySQL : « Utilisation non valide de la fonction de groupe » – WHERE ou HAVING : quand dois-je utiliser lequel ?

Erreur MySQL : « Utilisation non valide de la fonction de groupe » – WHERE ou HAVING : quand dois-je utiliser lequel ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-11 22:42:41844parcourir

MySQL Error:

Erreur MySQL : utilisation non valide de la fonction de regroupement

Lorsque vous rencontrez l'erreur « Utilisation non valide de la fonction de regroupement » lors de l'utilisation de MySQL, assurez-vous de comprendre la différence entre les clauses WHERE et HAVING.

Dans la requête fournie, le but est de trouver des pièces fournies par au moins deux fournisseurs. Initialement, vous essayez d'utiliser une clause WHERE pour comparer chaque pid à la sortie d'une sous-requête qui calcule les sid. Cependant, MySQL effectue le WHERE avant l'agrégation, ce qui rend cette approche inefficace.

La bonne solution est d'utiliser la clause HAVING. HAVING filtre les résultats des fonctions d'agrégation telles que COUNT(), vous permettant d'effectuer des calculs post-agrégation. En réécrivant la sous-requête en utilisant HAVING, comme indiqué dans la réponse :

<code class="language-sql">(
  SELECT c2.pid
  FROM Catalog AS c2
  WHERE c2.pid = c1.pid
  HAVING COUNT(c2.sid) >= 2
)</code>

Vous pouvez obtenir les résultats que vous souhaitez. La clause HAVING garantira que seules les pièces provenant d'au moins deux fournisseurs seront incluses dans le résultat final.

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