C'est une nouveauté de MySQL 5.7 et c'est un avertissement que votre requête est ambiguë.
Considérez le tableau suivant :
id | name | age | points
--------------------------------------------
1 Bob 21 1
2 James 14 1
3 Bob 21 3
4 James 14 2
5 Casey 17 3
Si vous avez fait la requête suivante :
SELECT name, age, SUM(points) FROM scores GROUP BY name
Puis le name
colonne est utilisée pour le regroupement. Notez que age
peut avoir plusieurs valeurs, il est donc "non agrégé". Vous devez faire quelque chose pour réduire ces valeurs.
Le comportement dans la version 5.6 et les versions précédentes consistait simplement à choisir le premier en fonction de l'ordre de tri, même si cela était parfois imprévisible et échouait. En 5.7, ils vous empêchent de le faire en premier lieu.
La solution ici est de regrouper sur cela également, ou d'appliquer un opérateur d'agrégation comme MIN()
à elle.