Musisz umieścić wszystkie kolumny SELECT
w GROUP BY
lub użyj na nich funkcji, które kompresują wyniki do pojedynczej wartości (np. MIN
, MAX
lub SUM
).
Prosty przykład, aby zrozumieć, dlaczego tak się dzieje:Wyobraź sobie, że masz taką bazę danych:
FOO BAR
0 A
0 B
i uruchamiasz SELECT * FROM table GROUP BY foo
. Oznacza to, że baza danych musi zwrócić pojedynczy wiersz jako wynik z pierwszą kolumną 0
aby wypełnić GROUP BY
ale są teraz dwie wartości bar
do wyboru. Jakiego wyniku można się spodziewać — A
lub B
? A może baza danych powinna zwrócić więcej niż jeden wiersz, naruszając umowę GROUP BY
? ?