Fehler „Vermischung von GROUP-Spalten“ in MySQL beheben
Der Fehler #1140 in MySQL, der auf eine „Vermischung von GROUP-Spalten“ hinweist, tritt auf, wenn eine Abfrage nicht aggregierte (nicht-GROUP) Spalten in der SELECT-Klausel enthält, aber auch aggregierte Spalten ohne eine GROUP BY-Klausel einschließt. Um dieses Problem anzugehen, gibt es zwei Hauptansätze:
1. Deaktivieren von ONLY_FULL_GROUP_BY:
MySQL verfügt über eine Konfigurationseinstellung namens ONLY_FULL_GROUP_BY, die standardmäßig auf ON steht. Diese Einstellung erzwingt eine strikte GROUP BY-Semantik und erfordert, dass alle nicht aggregierten Spalten in der SELECT-Klausel in die GROUP BY-Liste aufgenommen werden. Um diese Einstellung zu deaktivieren, führen Sie die folgende Abfrage aus:
SET SESSION ONLY_FULL_GROUP_BY = OFF;
Deaktivieren Sie ONLY_FULL_GROUP_BY, damit die Abfrage ohne Änderung ausgeführt werden kann.
2. Hinzufügen von GROUP BY-Spalten:
Alternativ können Sie die Abfrage so ändern, dass alle ausgewählten Felder in die GROUP BY-Klausel einbezogen werden. Dadurch wird sichergestellt, dass alle nicht aggregierten Spalten „gruppiert“ werden und dass die Ergebnismenge der strengen GROUP BY-Semantik entspricht:
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;
Das Ändern der Abfrage, sodass sie die GROUP BY-Klausel enthält, löst das Problem durch explizite Gruppierung des Ergebnisses Wird für alle nicht aggregierten Spalten festgelegt.
Das obige ist der detaillierte Inhalt vonWie kann der MySQL-Fehler „Mixing of GROUP Columns' (Fehler Nr. 1140) behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!