Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler „ist nicht in GROUP BY'?

Wie behebe ich den MySQL-Fehler „ist nicht in GROUP BY'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-20 04:56:18426Durchsuche

How to Resolve MySQL's

MySQL-Fehler „ist nicht in GROUP BY“

Dieser Fehler tritt auf, wenn Sie nicht aggregierte Spalten in die SELECT-Klausel von a aufnehmen Abfrage mit einer GROUP BY-Klausel, die die Gruppierungsanforderungen nicht erfüllt. In diesem Fall löst die Abfrage:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name` 
ORDER BY `count` DESC LIMIT 0, 25

den Fehler aus, da Typ, Sprache und Code nicht in GROUP BY enthalten sind. Um dieses Problem zu beheben, müssen Sie alle nicht aggregierten Spalten in die Gruppierung nach Anforderungen integrieren:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

SQL-Gruppierung nach Anforderungen

SQL92 schreibt vor, dass jede Spalte referenziert wird Außerhalb von Aggregationsfunktionen in der SELECT-Klausel müssen in der GROUP BY-Klausel enthalten sein. Allerdings lockert SQL99 diese Anforderung dahingehend, dass diese Spalten funktional von der Group-by-Klausel abhängig sein müssen.

MySQL-Gruppierungsverhalten

MySQL ermöglicht eine teilweise Gruppierung nach Dies kann zu nicht deterministischen Ergebnissen führen. Betrachten Sie beispielsweise die folgende Abfrage:

create table t (x int, y int);
insert into t (x,y) values (1,1),(1,2),(1,3);
select x,y from t group by x;

Diese Abfrage kann einen zufälligen y-Wert für jede x-Gruppe zurückgeben, wie in der folgenden Ausgabe gezeigt:

+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
+------+------+

Verhindern Teilweise gruppieren nach

Um dieses unbestimmte Verhalten zu verhindern, können Sie @@sql_mode auf setzen 'ONLY_FULL_GROUP_BY':

set @@sql_mode='ONLY_FULL_GROUP_BY';
select x,y from t group by x; 
ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „ist nicht in GROUP BY'?. 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