原始表结构
ID name type
1 张三 1
2 李四 1
3 王五 2
4 李六 2
有这么一个需求:得到每一组type的ID最大的一条记录;即要得到以下的结果
ID name type
4 李六 2
2 李四 1
常规想法无非是这样写
SELECT * FROM `user` GROUP BY type ORDER BY id desc;
但很不幸,得到的结果是
ID name type
3 王五 2
1 张三 1
这样写错误的原因是由于先进行了分组,再进行排序;应该反过来应该先排序再分组,但group by又不能写在order by之后;所以只能用嵌套查询了
SELECT t.* from (SELECT * FROM `user` ORDER BY id desc) as t GROUP BY t.type ORDER BY t.id desc;