Maison >base de données >tutoriel mysql >Comment corriger l'erreur « Utilisation invalide de la fonction de groupe » de MySQL ?

Comment corriger l'erreur « Utilisation invalide de la fonction de groupe » de MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-11 22:32:42788parcourir

How to Fix MySQL's

Résolution de l'erreur MySQL « Utilisation de la fonction de regroupement non valide »

Dans MySQL, lorsque vous rencontrez le message d'erreur « Utilisation de la fonction de regroupement non valide », il est crucial de comprendre la différence entre les clauses WHERE et HAVING.

Question :

Votre requête récupère les identifiants de pièces (pids) fournis par au moins deux fournisseurs. Cependant, vous recevez l'erreur suivante :

<code>1111 - Invalid use of group function</code>

Raison :

Cette erreur résulte d'une utilisation incorrecte de la clause WHERE dans la sous-requête. Vous essayez de filtrer les lignes à l'aide d'une clause WHERE avant de les regrouper et de les agréger, ce qui n'est pas un comportement attendu.

Solution :

La solution est de remplacer la clause WHERE par une clause HAVING. HAVING s'exécute après que MySQL ait regroupé les lignes et calculé les agrégats, vous permettant de filtrer les résultats en fonction de ces agrégats.

Réécrivez la sous-requête :

Remplacez la clause WHERE dans la sous-requête par la clause HAVING :

<code>(                  -- pid属于以下集合:
SELECT c2.pid                  -- pids集合
FROM Catalog AS c2             -- 来自catalog表
WHERE c2.pid = c1.pid
HAVING COUNT(c2.sid) >= 2)</code>

Instructions :

Cette sous-requête modifiée filtrera correctement les lignes après avoir regroupé par pid et calculé l'ID de fournisseur distinct (sid) associé à chaque pid. La clause HAVING garantit que seules les lignes avec un nombre d'au moins 2 sont sélectionnées.

En utilisant la clause HAVING de manière appropriée, vous pouvez résoudre l'erreur « Utilisation de la fonction de regroupement non valide » et obtenir les résultats souhaités.

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