MySQL GROUP BY и HAVING

Я группирую свои результаты на основе столбца X, и я хочу вернуть строки, которые имеют наибольшее значение столбца Y в группе .

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

Я хочу оптимизировать приведенный выше запрос. Можно ли это сделать без подзапросов?

Я нашел решение, и оно проще, чем вы думаете:

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

Выполняется за 5 миллисекунд на 20 000 строк.

14
задан Elie 25 February 2011 в 02:53
поделиться