Erreur MySQL n° 1140 : mélange de colonnes GROUP
Cette erreur se produit lorsqu'une requête MySQL mélange des fonctions GROUP avec des colonnes non-GROUP dans le Liste SELECT, mais sans clause GROUP BY. En d'autres termes, cela suggère que certaines des colonnes sélectionnées doivent être regroupées, tandis que d'autres ne doivent pas.
Considérez la requête SQL suivante :
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;
Cette requête tente de compter les nombre de nœuds de type 'update' et récupérez l'ID du nœud (nid) et la date de mise à jour pour chaque nœud. Cependant, il mélange la fonction GROUP COUNT() avec les colonnes non-GROUP nid et node_data_field_update_date_field_update_date_value dans la liste SELECT.
Pour résoudre cette erreur, désactivez le paramètre ONLY_FULL_GROUP_BY sur le serveur MySQL ou modifiez la requête pour grouper les colonnes non-GROUPE :
Désactivation ONLY_FULL_GROUP_BY :
mysql> SET GLOBAL ONLY_FULL_GROUP_BY = OFF;
Ajout d'un regroupement à la requête :
SELECT COUNT(node.nid) AS node_count, 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;
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!