Maison > base de données > tutoriel mysql > Erreur MySQL « n'est pas dans GROUP BY » : comment résoudre les problèmes de groupe complet par ?

Erreur MySQL « n'est pas dans GROUP BY » : comment résoudre les problèmes de groupe complet par ?

Patricia Arquette
Libérer: 2024-12-05 12:21:10
original
696 Les gens l'ont consulté

MySQL

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

Lorsque vous rencontrez l'erreur "n'est pas dans GROUP BY" dans MySQL, il indique que vous avez un écart entre les colonnes sélectionnées dans la clause SELECT et celles incluses dans la clause GROUP BY.

Comprendre le Erreur

Dans les exemples donnés, la première requête (SELECT count(DISTINCT name)) regroupe correctement par une seule colonne (nom), tandis que la deuxième requête (SELECT name, type, language, code`) tente de récupérer plus de colonnes que ce qui est inclus dans la clause GROUP BY`.

Résolution

Pour résoudre cette erreur, il est essentiel d'assurer un "group by complet", où tous les colonnes sélectionnées doivent également faire partie de la clause GROUP BY. Cela garantit que le résultat représente un résumé correct pour chaque groupe.

Pour la requête donnée, la syntaxe correcte serait :

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25
Copier après la connexion

Normes SQL et comportement MySQL

SQL92 exige que toutes les colonnes de la clause SELECT fassent partie de la clause GROUP BY. SQL99 assouplit légèrement cette restriction, autorisant les colonnes qui dépendent fonctionnellement de la clause GROUP BY.

Le comportement par défaut de MySQL autorise un "regroupement partiel", ce qui signifie que les colonnes non incluses dans la clause GROUP BY peuvent être sélectionnées. mais cela peut conduire à des résultats non déterministes. Pour éviter cela, vous pouvez définir la variable @@sql_mode sur « ONLY_FULL_GROUP_BY ». Cela forcera MySQL à adhérer à l'ensemble du groupe par exigence.

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