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
?