MySQL GROUP BY et HAVING

Je suis groupement mes résultats basés sur une colonne X et je veux retourner les lignes qui a la plus haute de la Colonne Y de la valeur du groupe.

SELECT * 
FROM   mytable 
GROUP  BY col1 
HAVING col2 >= (SELECT MAX(col2) 
                FROM   mytable AS mytable2 
                WHERE  mytable2.col1 = mytable.col1 GROUP BY mytable2.col1) 

Je veux optimiser la requête ci-dessus. Est-ce faisable sans les sous-requêtes?

J'ai trouvé la solution et c'est plus simple que vous le pensez:

SELECT * FROM (SELECT * FROM mytable ORDER BY col2 DESC) temp GROUP BY col1

S'exécute en 5 millisecondes sur 20 000 lignes.

source d'informationauteur Elie