L'erreur perplexe 1111 : utilisation non valide de la fonction de groupe
Ce problème survient lorsque vous tentez d'utiliser une fonction d'agrégation, telle qu'AVG, dans la clause WHERE, entraînant l'erreur énigmatique 1111 (HY000).
Comprendre l'essentiel du problème
SQL dicte que les fonctions d'agrégation ne peuvent pas résider dans la clause WHERE à moins qu'elles ne soient encapsulées dans une sous-requête contenue dans une clause HAVING ou une liste de sélection. De plus, la colonne soumise à l'opération d'agrégation doit être référencée à partir d'un contexte externe.
Résoudre l'erreur avec la clause WHERE
Une façon de rectifier cette erreur consiste à employer une sous-requête dans la clause WHERE, comme illustré ci-dessous :
select * from staff where salary > (select avg(salary) from staff)
Dans ce cas, le salaire moyen est calculé à l'aide de la sous-requête et puis comparé au salaire de chaque individu.
Résoudre l'erreur avec la clause HAVING
Alternativement, la clause HAVING peut être exploitée pour établir une condition de recherche pour un groupe ou un agrégat, comme illustré ici :
select deptid,COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
La clause HAVING précise que seuls les groupes de plus de deux membres seront renvoyés sous forme de résultat.
Commentaire supplémentaire sur la clause HAVING
Il convient de noter que la clause HAVING est généralement utilisée en conjonction avec la clause GROUP BY. Cependant, lorsque GROUP BY est absent, HAVING se comporte de la même manière qu'une clause WHERE.
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!