由于 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 仍然失效。