Mysql
 sql >> Database >  >> RDS >> Mysql

GROUP BY comportamento quando non sono presenti funzioni aggregate nella clausola SELECT

Leggi Documentazione MySQL su questo punto particolare.

In poche parole, MySQL consente di omettere alcune colonne da GROUP BY, a fini di prestazioni, tuttavia funziona solo se le colonne omesse hanno tutte lo stesso valore (all'interno di un raggruppamento), in caso contrario, il valore restituito dalla query è effettivamente indeterminato , come giustamente intuito da altri in questo post. A dire il vero l'aggiunta di una clausola ORDER BY non reintroducerebbe alcuna forma di comportamento deterministico.

Sebbene non sia al centro del problema, questo esempio mostra come l'utilizzo di * invece di un'enumerazione esplicita delle colonne desiderate sia spesso una cattiva idea.

Estratto dalla documentazione di 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.