Maison >base de données >tutoriel mysql >Pourquoi MySQL génère-t-il une erreur « n'est pas dans GROUP BY » et comment puis-je la corriger ?

Pourquoi MySQL génère-t-il une erreur « n'est pas dans GROUP BY » et comment puis-je la corriger ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-21 02:42:10612parcourir

Why Does MySQL Throw an

Erreur MySQL : "n'est pas dans GROUP BY"

MySQL génère souvent l'erreur "n'est pas dans GROUP BY" lors de la récupération données à partir de tables à l’aide de requêtes spécifiques. Comprendre la cause et comment la résoudre est crucial.

Contexte :

MySQL exige que toutes les colonnes incluses dans la clause SELECT, à l'exception des fonctions d'agrégation comme COUNT, doivent également être inclus dans la clause GROUP BY. Cela garantit que les résultats sont basés sur des groupes de données avec des valeurs distinctes dans les colonnes spécifiées.

Exemple d'erreur :

Dans l'exemple fourni, l'erreur se produit lors de l'utilisation la requête :

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name` 
ORDER BY `count` DESC LIMIT 0, 25

MySQL détecte que le nombre de colonnes n'est pas présent dans le GROUP BY

Résolution :

Pour résoudre cette erreur, vous devez inclure toutes les colonnes de la clause SELECT dans la clause GROUP BY. Dans ce cas, la requête modifiée serait :

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

Notes supplémentaires :

  • Le comportement par défaut de MySQL est d'autoriser un GROUP BY partiel, ce qui peut conduire à des résultats non déterministes.
  • Pour appliquer GROUP BY complet, définissez @@sql_mode='ONLY_FULL_GROUP_BY'.

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