Maison >base de données >tutoriel mysql >Pourquoi MySQL lance-t-il une erreur « main.users.type » n'est-elle pas dans GROUP BY ?

Pourquoi MySQL lance-t-il une erreur « main.users.type » n'est-elle pas dans GROUP BY ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 00:20:15607parcourir

Why is MySQL Throwing a 'main.users.type' Isn't in GROUP BY Error?

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!

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