我正在根据 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
在 20,000 行上运行 5 毫秒。