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? ?