Musíte použít AGREGÁTNÍ FUNKCI :
Agregační funkce počítají jeden výsledek ze sady vstupních hodnot.
SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;
Zpracování MySQL pro GROUP BY :
Ve standardním SQL nemůže dotaz obsahující klauzuli GROUP BY odkazovat na neagregované sloupce ve výběrovém seznamu, které nejsou pojmenovány v klauzuli GROUP BY
a:
MySQL rozšiřuje použití GROUP BY tak, že výběrový seznam může odkazovat na neagregované sloupce, které nejsou uvedeny v klauzuli GROUP BY. To znamená, že předchozí dotaz je v MySQL legální. Tuto funkci můžete použít k dosažení lepšího výkonu tím, že se vyhnete zbytečnému řazení a seskupování sloupců. To je však užitečné především v případě, že všechny hodnoty v každém neagregovaném sloupci, který není uveden v GROUP BY, jsou pro každou skupinu stejné. Server si může vybrat libovolnou hodnotu z každé skupiny, takže pokud nejsou stejné, zvolené hodnoty jsou neurčité
Takže s verzí MySQL bez explicitní agregační funkce můžete skončit s nedetermininistickými hodnotami. Důrazně doporučuji použít konkrétní agregační funkci.
UPRAVIT:
Z MySQL Handling of GROUP BY :
SQL92 a starší nepovolují dotazy, pro které výběrový seznam, podmínka HAVING nebo seznam ORDER BY odkazují na neagregované sloupce, které nejsou pojmenovány v klauzuli GROUP BY.
SQL99 a novější povolují takové neagregáty pro volitelnou funkci T301 pokud jsou funkčně závislé na sloupcích GROUP BY: Pokud takový vztah mezi jménem a správcem existuje, je dotaz legální. Tak by tomu bylo například v případě, že by byl uchován primární klíč zákazníků.
Příklad:
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;