Du skal bruge AGGREGAT FUNKTION :
Aggregerede funktioner beregner et enkelt resultat ud fra et sæt inputværdier.
SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;
MySQL-håndtering af GROUP BY :
I standard SQL kan en forespørgsel, der indeholder en GROUP BY-sætning, ikke henvise til ikke-aggregerede kolonner i udvalgslisten, som ikke er navngivet i GROUP BY-sætningen
og:
MySQL udvider brugen af GROUP BY, så den udvalgte liste kan henvise til ikke-aggregerede kolonner, der ikke er navngivet i GROUP BY-sætningen. Det betyder, at den foregående forespørgsel er lovlig i MySQL. Du kan bruge denne funktion til at få bedre ydeevne ved at undgå unødvendig kolonnesortering og gruppering. Dette er dog primært nyttigt, når alle værdier i hver ikke-aggregerede kolonne, der ikke er navngivet i GROUP BY, er de samme for hver gruppe. Serveren kan frit vælge enhver værdi fra hver gruppe, så medmindre de er ens, er de valgte værdier ubestemte
Så med MySQL-version uden eksplicit aggregeret funktion kan du ende med udetermininistiske værdier. Jeg foreslår kraftigt at bruge en specifik aggregeret funktion.
EDIT:
Fra MySQL-håndtering af GROUP BY :
SQL92 og tidligere tillader ikke forespørgsler, hvor valglisten, HAVING-betingelsen eller ORDER BY-listen refererer til ikke-aggregerede kolonner, der ikke er navngivet i GROUP BY-udtrykket.
SQL99 og senere tillader sådanne ikke-aggregater pr. valgfri funktion T301 hvis de er funktionelt afhængige af GROUP BY-kolonner: Hvis et sådant forhold eksisterer mellem navn og custid, er forespørgslen lovlig. Dette ville for eksempel være tilfældet, hvis varetagelse af en primær nøgle for kunder.
Eksempel:
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;