Maison > base de données > tutoriel mysql > Comment corriger l'erreur « only_full_group_by » de MySQL dans les requêtes ?

Comment corriger l'erreur « only_full_group_by » de MySQL dans les requêtes ?

Patricia Arquette
Libérer: 2025-01-25 03:06:08
original
539 Les gens l'ont consulté

How to Fix MySQL's

Dépannage et résolution des erreurs MySQL "only_full_group_by"

MySQL version 5.7 a introduit le mode SQL "only_full_group_by", ce qui a amené certaines instructions de requête qui s'exécutaient auparavant normalement à signaler des erreurs. Cette erreur se produit lorsque la liste SELECT contient des colonnes non agrégées qui ne sont pas répertoriées dans la clause GROUP BY et n'ont pas de dépendance fonctionnelle sur les colonnes de la clause GROUP BY.

La solution est d'ajouter la colonne group_id à la clause GROUP BY afin que l'instruction de requête soit conforme au mode "only_full_group_by". Cela garantit qu'il n'y a qu'une seule ligne de résultats pour chaque combinaison différente de group_id et group_name.

La meilleure pratique consiste à qualifier toutes les colonnes avec des noms de table ou des alias, en particulier lorsque vous travaillez avec plusieurs tables. Cela permet d'éviter toute ambiguïté et garantit que les données requises sont sélectionnées.

Ce qui suit est l'instruction de requête modifiée, qui peut être exécutée normalement en mode "only_full_group_by":

<code class="language-sql">SELECT 
  g.group_id AS 'value', 
  g.group_name AS 'text' 
FROM mod_users_groups g
LEFT JOIN mod_users_data d ON g.group_id = d.group_id 
WHERE g.active = 1 
  AND g.department_id = 1 
  AND g.manage_work_orders = 1 
  AND g.group_name != 'root' 
  AND g.group_name != 'superuser' 
GROUP BY 
  g.group_id, 
  g.group_name
HAVING COUNT(d.user_id) > 0 
ORDER BY g.group_name</code>
Copier après la connexion

Il n'est pas recommandé de désactiver le mode "only_full_group_by" car cela permet de garantir l'intégrité et l'exactitude des données. En forçant l'inclusion de colonnes non agrégées dans la clause GROUP BY, MySQL peut garantir que les résultats sont précis et reflètent les données groupées attendues.

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