Musíte vložit všechny sloupce SELECT
v GROUP BY
nebo na nich použijte funkce, které komprimují výsledky na jedinou hodnotu (např. MIN
, MAX
nebo SUM
).
Jednoduchý příklad, abyste pochopili, proč k tomu dochází:Představte si, že máte databázi podobnou této:
FOO BAR
0 A
0 B
a spustíte SELECT * FROM table GROUP BY foo
. To znamená, že databáze musí jako výsledek vrátit jeden řádek s prvním sloupcem 0
splnit GROUP BY
ale nyní existují dvě hodnoty bar
z čeho vybírat. Jaký výsledek byste očekávali - A
nebo B
? Nebo by měla databáze vrátit více než jeden řádek, čímž poruší smlouvu GROUP BY
?