Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler Nr. 1140: „Mischung von GROUP-Spalten'?

Wie behebe ich den MySQL-Fehler Nr. 1140: „Mischung von GROUP-Spalten'?

Linda Hamilton
Linda HamiltonOriginal
2024-12-18 08:03:10841Durchsuche

How to Resolve MySQL Error #1140:

MySQL-Fehler Nr. 1140: Verständnis des Problems „Mischung von Gruppenspalten“

Der MySQL-Fehler Nr. 1140, „Mischung von Gruppenspalten ( „MIN(), MAX(), COUNT(), ...) ohne GROUP-Spalten ist unzulässig, wenn es keine GROUP BY-Klausel gibt“, erscheint, wenn Sie versuchen, Daten zu aggregieren (z. B. mit Funktionen wie COUNT()), ohne die Ergebnisse zu gruppieren. Dies kann auftreten, wenn die SQL-Abfrage Aggregatfunktionen und nicht aggregierte Spalten in der SELECT-Klausel enthält und eine GROUP BY-Klausel fehlt.

Problembeschreibung:

Die Die folgende SQL-Abfrage veranschaulicht dieses Problem:

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

Das Ausführen dieser Abfrage mit der auf dem Server aktivierten Einstellung „NUR_FULL_GROUP_BY“ führt zu dem Fehlermeldung:

#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`

Lösung:

Um dieses Problem zu beheben, muss man entweder die Einstellung ONLY_FULL_GROUP_BY deaktivieren oder einen Gruppierungsvorgang in der SQL-Abfrage erzwingen.

  • NUR_FULL_GROUP_BY deaktivieren: Dies kann erreicht werden indem Sie die MySQL-Konfigurationsdatei ändern und den folgenden Parameter festlegen:
only_full_group_by = 0
  • Gruppierung erzwingen: Durch Hinzufügen einer GROUP BY-Klausel zur Abfrage wird das Problem behoben. In diesem Fall kann die Gruppierung auf ein oder mehrere Felder, beispielsweise node.nid, angewendet werden, um sicherzustellen, dass die Aggregatfunktion (COUNT()) nur innerhalb der gruppierten Daten angewendet wird. Die geänderte Abfrage würde wie folgt aussehen:
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

Durch die Anwendung einer dieser Lösungen können Sie den Fehler „Mischen von GROUP-Spalten“ umgehen und die aggregierten Daten erfolgreich abrufen.

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler Nr. 1140: „Mischung von GROUP-Spalten'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn