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 ?

Pourquoi MySQL lance-t-il « Utilisation invalide de la fonction de groupe » et comment y remédier à l'aide de HAVING ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-11 22:31:44833parcourir

Why MySQL Throws "Invalid use of group function"

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!

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