Maison > base de données > tutoriel mysql > le corps du texte

Comment corriger l'erreur MySQL « L'expression de la liste SELECT n'est pas dans la clause GROUP BY » ?

Linda Hamilton
Libérer: 2024-11-21 02:24:12
original
426 Les gens l'ont consulté

How to Fix the MySQL

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

Problème :

Lors de l'exécution d'un requête qui inclut des colonnes non agrégées dans la clause GROUP BY, vous rencontrez le problème suivant erreur :

#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by
Copier après la connexion

Raison :

Cette erreur se produit lorsque vous avez des colonnes non agrégées dans la liste SELECT qui ne sont pas incluses dans la clause GROUP BY. Dans MySQL version 5.7.12, le mode SQL only_full_group_by est activé par défaut, ce qui applique des règles de regroupement plus strictes.

Solution :

Pour résoudre cette erreur, vous pouvez soit :

1. Ajoutez les colonnes non agrégées à la clause GROUP BY :

Cela garantit que la requête ne renvoie que les lignes qui ont les mêmes valeurs pour toutes les colonnes de la clause GROUP BY.

SELECT libelle, credit_initial, disponible_v, SUM(montant) AS 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;
Copier après la connexion

2. Désactivez le mode SQL only_full_group_by :

Cela permet à la requête de renvoyer des lignes qui peuvent ne pas avoir les mêmes valeurs pour toutes les colonnes de la clause GROUP BY.

sudo vim /etc/mysql/conf.d/mysql.cnf
Copier après la connexion

Faites défiler jusqu'à en bas du fichier et ajoutez les lignes suivantes :

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Copier après la connexion

Enregistrez et quittez vim. Redémarrez MySQL :

sudo service mysql restart
Copier après la connexion

Après le redémarrage de MySQL, la requête devrait s'exécuter avec succès sans 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!

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