Maison > base de données > tutoriel mysql > Comment résoudre l'erreur MySQL 5.7 `only_full_group_by` ?

Comment résoudre l'erreur MySQL 5.7 `only_full_group_by` ?

Linda Hamilton
Libérer: 2025-01-25 02:51:09
original
611 Les gens l'ont consulté

How to Resolve the MySQL 5.7 `only_full_group_by` Error?

only_full_group_by Erreur dans MySQL 5.7

MySQL version 5.7 a introduit le mode only_full_group_by, qui exige que toutes les colonnes qui ne sont pas agrégées dans l'instruction SELECT soient incluses dans l'instruction GROUP BY. Cette erreur se produit lorsque l'instruction SELECT de la requête contient des colonnes non agrégées qui n'apparaissent pas dans l'instruction GROUP BY.

Il existe deux manières de résoudre ce problème :

Méthode 1 : Ajouter les colonnes manquantes à GROUP BY

Ajoutez la colonne manquante mod_users_groups.group_id à l'instruction 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_name, 
  g.group_id 
HAVING COUNT(d.user_id) > 0 
ORDER BY g.group_name</code>
Copier après la connexion

Cela garantit que toutes les colonnes qui ne sont pas agrégées dans l'instruction SELECT sont incluses dans l'instruction GROUP BY, éliminant ainsi l'erreur.

Méthode 2 : Utiliser la fonction d'agrégation

Alternativement, si la colonne manquante n'est pas pertinente pour le regroupement, vous pouvez utiliser une fonction d'agrégation pour résumer les données avant de la sélectionner. Par exemple, si group_name est effectivement unique, vous pouvez remplacer mod_users_groups.group_id par la fonction d'agrégation suivante :

<code class="language-sql">MIN(mod_users_groups.group_id)</code>
Copier après la connexion

Cela renverra le plus petit group_name pour chaque group_id unique, garantissant que l'instruction SELECT ne contient que des colonnes agrégées.

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