Maison > base de données > tutoriel mysql > Comment résoudre l'erreur MySQL n°1140 : « Mélange de colonnes GROUP » ?

Comment résoudre l'erreur MySQL n°1140 : « Mélange de colonnes GROUP » ?

Linda Hamilton
Libérer: 2024-12-18 08:03:10
original
885 Les gens l'ont consulté

How to Resolve MySQL Error #1140:

Erreur MySQL n°1140 : Comprendre le problème du "Mélange des colonnes GROUP"

L'erreur MySQL n°1140, "Mélange des colonnes GROUP ( MIN(), MAX(), COUNT(), ...) sans colonnes GROUP est illégal s'il n'y a pas de clause GROUP BY", se produit lorsque vous tentez d'agréger données (par exemple, en utilisant des fonctions comme COUNT()) sans regrouper les résultats. Cela peut se produire lorsque la requête SQL contient des fonctions d'agrégation et des colonnes non agrégées dans la clause SELECT et qu'une clause GROUP BY est absente.

Description du problème :

Le La requête SQL suivante illustre ce problème :

SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC
Copier après la connexion

Exécution de cette requête avec le paramètre ONLY_FULL_GROUP_BY activé sur le serveur entraîne le message d'erreur :

#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`
Copier après la connexion

Solution :

Pour résoudre ce problème, il faut soit désactiver le paramètre ONLY_FULL_GROUP_BY, soit appliquer une opération de regroupement dans la requête SQL .

  • Désactivation ONLY_FULL_GROUP_BY : Ceci peut être réalisé en modifiant le fichier de configuration MySQL et en définissant le paramètre suivant :
only_full_group_by = 0
Copier après la connexion
  • Application du regroupement : Ajout d'une clause GROUP BY à la requête résoudra le problème. Dans ce cas, le regroupement peut être appliqué à un ou plusieurs champs, tels que node.nid, pour garantir que la fonction d'agrégation (COUNT()) est appliquée uniquement dans les données groupées. La requête modifiée ressemblerait à :
SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
GROUP BY node.nid
ORDER BY node_data_field_update_date_field_update_date_value DESC
Copier après la connexion

En appliquant l'une de ces solutions, vous pouvez contourner l'erreur "Mélange des colonnes GROUP" et récupérer avec succès les données 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