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
Libérer: 2025-01-11 22:31:44
original
829 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal