Това е ново нещо в MySQL 5.7 и е предупреждение, че вашата заявка е двусмислена.
Разгледайте следната таблица:
id | name | age | points
--------------------------------------------
1 Bob 21 1
2 James 14 1
3 Bob 21 3
4 James 14 2
5 Casey 17 3
Ако сте направили следната заявка:
SELECT name, age, SUM(points) FROM scores GROUP BY name
След това name
колона се използва за групиране. Имайте предвид, че age
може да има множество стойности, така че е „необобщен“. Трябва да направите нещо, за да свиете тези стойности.
Поведението в 5.6 и предишните беше просто да се избере първият в зависимост от реда на сортиране, въпреки че това понякога беше непредсказуемо и би се провалило. В 5.7 те ви пречат да го направите на първо място.
Решението тук е да групирате и това или да приложите обобщен оператор като MIN()
към него.