Devi usare FUNZIONE AGGREGA :
Le funzioni aggregate calcolano un singolo risultato da un insieme di valori di input.
SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;
Nell'SQL standard, una query che include una clausola GROUP BY non può fare riferimento a colonne non aggregate nell'elenco di selezione che non sono denominate nella clausola GROUP BY
e:
MySQL estende l'uso di GROUP BY in modo che l'elenco di selezione possa fare riferimento a colonne non aggregate non nominate nella clausola GROUP BY. Ciò significa che la query precedente è legale in MySQL. È possibile utilizzare questa funzione per ottenere prestazioni migliori evitando l'ordinamento e il raggruppamento delle colonne non necessari. Tuttavia, ciò è utile principalmente quando tutti i valori in ogni colonna non aggregata non denominata in GROUP BY sono gli stessi per ogni gruppo. Il server è libero di scegliere qualsiasi valore da ciascun gruppo, quindi, a meno che non siano gli stessi, i valori scelti sono indeterminati
Quindi con la versione MySQL senza funzione di aggregazione esplicita potresti ritrovarti con valori non deterministici. Consiglio vivamente di utilizzare una specifica funzione di aggregazione.
MODIFICA:
Da Gestione MySQL di GROUP BY :
SQL92 e versioni precedenti non consentono query per le quali l'elenco di selezione, la condizione HAVING o l'elenco ORDER BY fanno riferimento a colonne non aggregate che non sono denominate nella clausola GROUP BY.
SQL99 e versioni successive consentono tali non aggregati per funzionalità facoltativa T301 se sono funzionalmente dipendenti dalle colonne GROUP BY: Se esiste una tale relazione tra nome e custid, la query è legale. Questo sarebbe il caso, ad esempio, se fosse custodita una chiave primaria dei clienti.
Esempio:
SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o
JOIN customers AS c
ON o.custid = c.custid
GROUP BY o.custid;