DBAtlas · Atlas für Datenbankbetrieb

1055: Expression not in GROUP BY (only_full_group_by)

MySQL

Was bedeutet das?

Eine Spalte, die weder in GROUP BY steht noch in eine Aggregatfunktion eingeschlossen ist, wurde in der SELECT-Liste oder in HAVING/ORDER BY verwendet. Da der SQL-Modus ONLY_FULL_GROUP_BY aktiviert ist, lehnt MySQL diesen nichtdeterministischen Ausdruck ab.

Ursache

Die Abfrage wählt direkt eine andere als die gruppierten Spalten aus, diese Spalte hat aber möglicherweise keinen einzelnen Wert pro Gruppe. ONLY_FULL_GROUP_BY ist ab MySQL 5.7 standardmäßig aktiviert; Abfragen, die auf dem alten, nachsichtigen GROUP-BY-Verhalten beruhen, lösen diesen Fehler aus.

Lösung

Nimm die Spalte entweder in die GROUP-BY-Liste auf oder schließe sie in eine Aggregatfunktion ein (MAX(), MIN(), ANY_VALUE()). Weißt du, dass der Wert innerhalb der Gruppe wirklich eindeutig ist, unterdrückt ANY_VALUE() die Mehrdeutigkeit bewusst. Den Modus zu deaktivieren (ONLY_FULL_GROUP_BY aus sql_mode entfernen), statt die Abfrage zu korrigieren, bringt das Risiko falscher Ergebnisse zurück; vermeide das.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank