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
?