Maison >base de données >tutoriel mysql >Pourquoi MySQL lance-t-il une erreur « main.users.type » n'est-elle pas dans GROUP BY ?
Erreur MySQL : 'main.users.type' n'est pas dans GROUP BY
Le message d'erreur que vous avez rencontré dans phpMyAdmin indique que vous il manque une colonne (type dans ce cas) de la clause GROUP BY de votre requête.
Raison :
MySQL exige que toutes les colonnes de la clause SELECT qui ne sont pas des fonctions d'agrégation (par exemple, COUNT, SUM) doivent être incluses dans GROUP BY. clause. Cela garantit que les résultats sont regroupés correctement en fonction de ces colonnes.
Correction :
Pour résoudre l'erreur, vous devez ajouter la colonne manquante à la clause GROUP BY :
SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name`, `type`, `language`, `code` ORDER BY `count` DESC LIMIT 0, 25
Contexte :
En SQL92, c'est un l'exigence que toutes les colonnes de la clause SELECT fassent partie de la clause GROUP BY. Dans SQL99, cette restriction a été assouplie pour autoriser les colonnes qui dépendent fonctionnellement de la clause GROUP BY. Cependant, MySQL autorise par défaut le groupe partiel, ce qui peut conduire à des résultats imprévisibles.
Pour garantir la cohérence, vous pouvez définir le @@sql_mode sur 'ONLY_FULL_GROUP_BY' :
SET @@sql_mode='ONLY_FULL_GROUP_BY';
Avec Avec ce paramètre, toute requête GROUP BY partielle entraînera une erreur, vous obligeant à inclure toutes les colonnes nécessaires dans la clause.
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!