Vous devez mettre toutes les colonnes du SELECT dans le GROUP BY ou utilisez des fonctions sur eux qui compressent les résultats en une seule valeur (comme MIN , MAX ou SUM ).
Un exemple simple pour comprendre pourquoi cela se produit :Imaginez que vous ayez une base de données comme celle-ci :
FOO BAR
0 A
0 B
et vous exécutez SELECT * FROM table GROUP BY foo . Cela signifie que la base de données doit renvoyer une seule ligne comme résultat avec la première colonne 0 pour remplir le GROUP BY mais il y a maintenant deux valeurs de bar à choisir. Quel résultat attendez-vous - A ou B ? Ou si la base de données renvoie plus d'une ligne, violant le contrat de GROUP BY ?