通过sql分组查询数据时,一般通过group by来完成,group by默认取相同的分组列(一列或者多列)中第一个数据。...如果想获取sql分组中id最大的记录,我们可能想到的sql如下(name列作为分组):
select id,name from (select id,name from tt order by id desc...) as t group by name
不过执行该sql发现并不能达到我们的目的,输出数据如下:
// 表数据如下:
id,name
1,name1
2,name1
3,name2
4,name2...因为mysql 5.6之后版本对排序的sql解析做了优化,子查询中的排序是会被忽略的,所以上面的order by id desc未起到作用。.../ 输出结果如下:
id,name
2,name1
4,name2
其实除了group by获取分组最后一个记录之外,还可以通过关联子查询方式来实现:
select id,name from tt a