Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comportement de GROUP BY lorsqu'aucune fonction d'agrégation n'est présente dans la clause SELECT

Lire la documentation MySQL sur ce point particulier.

En un mot, MySQL permet d'omettre certaines colonnes du GROUP BY, à des fins de performances, cependant cela ne fonctionne que si les colonnes omises ont toutes la même valeur (au sein d'un regroupement), sinon, la valeur renvoyée par la requête est bien indéterminée , comme correctement deviné par d'autres dans ce post. Pour être sûr que l'ajout d'une clause ORDER BY ne réintroduirait aucune forme de comportement déterministe.

Bien qu'il ne soit pas au cœur du problème, cet exemple montre comment l'utilisation de * plutôt qu'une énumération explicite des colonnes souhaitées est souvent une mauvaise idée.

Extrait de la documentation MySQL 5.0 :

When using this feature, all rows in each group should have the same values
for the columns that are omitted from the GROUP BY part. The server is free
to return any value from the group, so the results are indeterminate unless
all values are the same.