sql >> Base de Datos >  >> RDS >> Mysql

Comportamiento GROUP BY cuando no hay funciones agregadas presentes en la cláusula SELECT

Lea documentación de MySQL sobre este punto en particular.

En pocas palabras, MySQL permite omitir algunas columnas de GROUP BY, por motivos de rendimiento, sin embargo, esto funciona solo si todas las columnas omitidas tienen el mismo valor (dentro de una agrupación), de lo contrario, el valor devuelto por la consulta es indeterminado , como lo adivinaron correctamente otros en esta publicación. Sin duda, agregar una cláusula ORDER BY no volvería a introducir ninguna forma de comportamiento determinista.

Aunque no es el núcleo del problema, este ejemplo muestra cómo el uso de * en lugar de una enumeración explícita de las columnas deseadas suele ser una mala idea.

Extracto de la documentación de 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.