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!