Devi inserire tutte le colonne di SELECT
nel GROUP BY
oppure usa funzioni su di essi che comprimono i risultati in un singolo valore (come MIN
, MAX
o SUM
).
Un semplice esempio per capire perché questo accade:Immagina di avere un database come questo:
FOO BAR
0 A
0 B
ed esegui SELECT * FROM table GROUP BY foo
. Ciò significa che il database deve restituire una singola riga come risultato con la prima colonna 0
per soddisfare il GROUP BY
ma ora ci sono due valori di bar
tra cui scegliere. Quale risultato ti aspetteresti:A
o B
? Oppure il database dovrebbe restituire più di una riga, violando il contratto di GROUP BY
?