Você precisa usar FUNÇÃO AGREGADA :
As funções agregadas calculam um único resultado de um conjunto de valores de entrada.
SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;
db<>demonstração de violino
Manipulação MySQL de GROUP BY :
No SQL padrão, uma consulta que inclui uma cláusula GROUP BY não pode se referir a colunas não agregadas na lista de seleção que não são nomeadas na cláusula GROUP BY
e:
O MySQL estende o uso de GROUP BY para que a lista de seleção possa se referir a colunas não agregadas não nomeadas na cláusula GROUP BY. Isso significa que a consulta anterior é legal no MySQL. Você pode usar esse recurso para obter melhor desempenho evitando classificação e agrupamento de colunas desnecessários. No entanto, isso é útil principalmente quando todos os valores em cada coluna não agregada não nomeada em GROUP BY são os mesmos para cada grupo. O servidor é livre para escolher qualquer valor de cada grupo, portanto, a menos que sejam iguais, os valores escolhidos são indeterminados
Portanto, com a versão do MySQL sem função agregada explícita, você pode acabar com valores indeterminísticos. Eu sugiro fortemente usar a função agregada específica.
EDITAR:
De Manipulação MySQL de GROUP BY :
O SQL92 e versões anteriores não permitem consultas para as quais a lista de seleção, a condição HAVING ou a lista ORDER BY referem-se a colunas não agregadas que não são nomeadas na cláusula GROUP BY.
SQL99 e posteriores permitem esses não agregados por recurso opcional T301 se forem funcionalmente dependentes de colunas GROUP BY: Se existir tal relação entre nome e cliente, a consulta é válida. Este seria o caso, por exemplo, se o cliente fosse uma chave primária de clientes.
Exemplo:
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;