Dette er en ny ting i MySQL 5.7 og er en advarsel om, at din forespørgsel er tvetydig.
Overvej følgende tabel:
id | name | age | points
--------------------------------------------
1 Bob 21 1
2 James 14 1
3 Bob 21 3
4 James 14 2
5 Casey 17 3
Hvis du lavede følgende forespørgsel:
SELECT name, age, SUM(points) FROM scores GROUP BY name
Derefter name
kolonne bruges til gruppering. Bemærk, at age
kan have flere værdier, så det er "ikke-aggregeret". Du er nødt til at gøre noget for at kollapse disse værdier.
Adfærden i 5.6 og tidligere var bare at vælge den første afhængigt af sorteringsrækkefølgen, selvom dette nogle gange var uforudsigeligt og ville mislykkes. I 5.7 forhindrer de dig i at gøre det i første omgang.
Løsningen her er også at gruppere på det, eller at anvende en aggregeret operator som MIN()
til det.