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
Freigeben: 2024-12-20 04:56:18
Original
390 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

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 |
+------+------+
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage