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
Linda Hamiltonoriginal
2024-12-18 08:03:10862parcourir

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

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`

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
  • 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

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!

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