mysql 5.7 (我不确定和版本有没有区别)
这个发现简直太坑跌了,花了我一整天的时间才测出来了一句话,就是
group by后面的字段相同的所有行,都会再用主键再进行一次从小到大的排序。比如:group by name字段,会将所有name="张三"的合并成一行,然后重点出现了!!!-----出现的这一行是所有name='张三'的行中,主键最小的一行,也就是group by进行分类后,会将每个name里的数据按照主键进行排序,然后输出第一行,也就是主键最小的那一行!
网上的一些找group by后某个字段的最大值的方法:
select * from (select * from table order by time desc) as num group by name
完全是无法得到结果的,因为还是group by会将name里的行按照name的主键id进行从小到达的排序,所以不会得到每个name的最大time行
所以我得到了一个新的方法,就是将需要取最大值的字段进行这样处理:
select SUBSTRING_INDEX(GROUP_CONCAT(course ORDER BY score desc),',',1),
max(score) as score, name
from grade1
group by name;
这个方法查询出来的是相同name最大score对应的course,最大score,name