Dies ist eine neue Sache in MySQL 5.7 und ist eine Warnung, dass Ihre Abfrage mehrdeutig ist.
Betrachten Sie die folgende Tabelle:
id | name | age | points
--------------------------------------------
1 Bob 21 1
2 James 14 1
3 Bob 21 3
4 James 14 2
5 Casey 17 3
Wenn Sie die folgende Abfrage durchgeführt haben:
SELECT name, age, SUM(points) FROM scores GROUP BY name
Dann der name
Spalte dient zur Gruppierung. Beachten Sie das age
kann mehrere Werte haben, also ist es "nicht aggregiert". Sie müssen etwas tun, um diese Werte zu reduzieren.
Das Verhalten in 5.6 und früheren Versionen bestand darin, je nach Sortierreihenfolge einfach die erste auszuwählen, obwohl dies manchmal unvorhersehbar war und fehlschlagen würde. In 5.7 hindern sie Sie daran, es überhaupt zu tun.
Die Lösung hier ist, auch danach zu gruppieren oder einen Aggregatoperator wie MIN()
anzuwenden dazu.