由于 group by 先于 order by 执行,会导致 order by 失效,例如
SELECT * FROM test GROUP BY city ORDER BY date;
并不能取出分组中的最新一条记录。
解决方法:
SELECT * FROM (
SELECT * FROM test ORDER BY date DESC LIMIT 0,1000
) t
GROUP BY t.city;
使用子查询的办法,先 order by 后 group by,但是也有一个问题,子查询中必须使用limit,否则 order by 仍然失效。
本文探讨了在SQL查询中,GroupBy与OrderBy操作的执行顺序导致的问题,并提供了解决方案。通过使用子查询,先进行OrderBy操作再GroupBy,可以有效避免OrderBy失效的情况,但需注意使用Limit。
1万+

被折叠的 条评论
为什么被折叠?



