1055: Expression not in GROUP BY (only_full_group_by)
MySQLWas 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.
Weitere Einträge zu dieser Datenbank
- 1553Cannot drop index needed in a foreign key constraint
- 3948Loading local data is disabled; this must be enabled on both the client and server sides
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key
- 1267Illegal mix of collations
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size'
- 1785Statement violates GTID consistency