Você deve colocar todas as colunas do
SELECT no GROUP BY ou use funções neles que compactam os resultados em um único valor (como MIN , MAX ou SUM ). Um exemplo simples para entender porque isso acontece:Imagine que você tenha um banco de dados assim:
FOO BAR
0 A
0 B
e você executa
SELECT * FROM table GROUP BY foo . Isso significa que o banco de dados deve retornar uma única linha como resultado com a primeira coluna 0 para cumprir o GROUP BY mas agora existem dois valores de bar para escolher. Qual resultado você esperaria - A ou B ? Ou o banco de dados deve retornar mais de uma linha, violando o contrato de GROUP BY ?