Résolution de l'erreur "Mélange des colonnes GROUP" dans MySQL
L'erreur #1140 dans MySQL, indiquant un "Mélange des colonnes GROUP", se produit lorsqu'une requête contient des colonnes non agrégées (non-GROUP) dans la clause SELECT tout en incluant également des colonnes agrégées sans clause GROUP BY. Pour résoudre ce problème, il existe deux approches principales :
1. Désactivation de ONLY_FULL_GROUP_BY :
MySQL a un paramètre de configuration appelé ONLY_FULL_GROUP_BY, qui est activé par défaut. Ce paramètre applique une sémantique GROUP BY stricte, exigeant que toutes les colonnes non agrégées de la clause SELECT soient incluses dans la liste GROUP BY. Pour désactiver ce paramètre, exécutez la requête suivante :
SET SESSION ONLY_FULL_GROUP_BY = OFF;
Désactivez ONLY_FULL_GROUP_BY pour permettre à la requête de s'exécuter sans modification.
2. Ajout de colonnes GROUP BY :
Vous pouvez également modifier la requête pour inclure tous les champs sélectionnés dans la clause GROUP BY. Cela garantit que toutes les colonnes non agrégées sont « regroupées » et que l'ensemble de résultats satisfait à la sémantique stricte GROUP BY :
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, node_data_field_update_date.field_update_date_value ORDER BY node_data_field_update_date_field_update_date_value DESC;
Modifier la requête pour inclure la clause GROUP BY résout le problème en regroupant explicitement le résultat défini sur toutes les colonnes non 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!