Debes poner todas las columnas del SELECT
en el GROUP BY
o use funciones en ellos que comprimen los resultados a un solo valor (como MIN
, MAX
o SUM
).
Un ejemplo simple para entender por qué sucede esto:imagina que tienes una base de datos como esta:
FOO BAR
0 A
0 B
y ejecutas SELECT * FROM table GROUP BY foo
. Esto significa que la base de datos debe devolver una sola fila como resultado con la primera columna 0
para cumplir con el GROUP BY
pero ahora hay dos valores de bar
para elegir. ¿Qué resultado esperaría? A
o B
? ¿O debería la base de datos devolver más de una fila, violando el contrato de GROUP BY
? ?