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