Maison >base de données >tutoriel mysql >Pourquoi MySQL lance-t-il « Utilisation invalide de la fonction de groupe » et comment y remédier à l'aide de HAVING ?
Erreur MySQL : "Utilisation non valide de la fonction de groupe" causes et solutions
Dans la requête MySQL donnée, l'erreur "Utilisation invalide de la fonction de groupe" est due à l'utilisation de la fonction COUNT dans la clause WHERE. La clause WHERE filtre les lignes avant le regroupement, provoquant une erreur.
Utilisez la clause HAVING pour résoudre le problème
Pour résoudre ce problème, remplacez la clause WHERE par une clause HAVING. La clause HAVING filtre les groupes après le regroupement. Dans cet exemple, la clause HAVING doit vérifier le nombre d'ID fournisseur (sid) pour s'assurer qu'il est supérieur ou égal à 2.
Ce qui suit est la sous-requête corrigée :
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 )</code>
Requête complète avec la clause HAVING
En utilisant la sous-requête mise à jour, la requête complète devient :
<code class="language-sql">SELECT c1.pid -- 选择 pid FROM Catalog AS c1 -- 来自 Catalog 表 WHERE c1.pid IN (SELECT c2.pid -- 其中 pid 在以下集合中: FROM Catalog AS c2 -- pids WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 -- 至少有两个对应的 sids );</code>
Cette requête renverra les pids des pièces fournies par au moins deux fournisseurs différents.
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!