Maison >base de données >tutoriel mysql >Comment corriger l'erreur MySQL « Expression de la liste SELECT non incluse dans la clause GROUP BY » ?

Comment corriger l'erreur MySQL « Expression de la liste SELECT non incluse dans la clause GROUP BY » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-25 06:14:15296parcourir

How to Fix the

Dépannage de l'erreur « L'expression de la liste SELECT n'est pas dans la clause GROUP BY »

L'erreur « L'expression de la liste SELECT n'est pas dans la clause GROUP BY et contient une colonne non agrégée » libelle'," est généralement rencontré lors de l'exécution d'une requête avec une colonne non agrégée dans la liste SELECT et la clause GROUP BY. Pour résoudre cette erreur, il est nécessaire de s'assurer que toutes les colonnes non agrégées sont incluses dans la clause GROUP BY ou sont agrégées à l'aide de fonctions telles que SUM(), AVG() ou COUNT().

Dans Dans ce cas précis, la requête tente de sélectionner des colonnes comprenant 'libelle', 'credit_initial', 'disponible_v' et 'montant'. Cependant, seul « libelle » est inclus dans la clause GROUP BY, tandis que « montant » n'est pas agrégé. Pour résoudre ce problème, modifiez la requête pour inclure 'montant' dans la clause GROUP BY ou l'agréger à l'aide de SUM() ou d'une autre fonction appropriée.

SOLUTION

Voici une version mise à jour de la requête qui inclut « montant » dans la clause GROUP BY :

SELECT libelle, credit_initial, disponible_v, SUM(montant) AS total_montant 
FROM fiche, annee, type 
WHERE type.id_type = annee.id_type 
AND annee.id_annee = fiche.id_annee 
AND annee = YEAR(current_timestamp) 
GROUP BY libelle, credit_initial, disponible_v 
ORDER BY libelle ASC

Alternativement, la requête peut être ajustée pour agréger 'montant' à l'aide de SUM() :

SELECT libelle, credit_initial, disponible_v, SUM(montant) 
FROM fiche, annee, type 
WHERE type.id_type = annee.id_type 
AND annee.id_annee = fiche.id_annee 
AND annee = YEAR(current_timestamp) 
GROUP BY libelle 
ORDER BY libelle ASC

En effectuant ces modifications, la requête sera conforme au mode GROUP BY strict de MySQL 5.7 et évitera l'erreur.

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