sql语句group by找到最大值及对应的一条数据

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

猜你喜欢

转载自blog.csdn.net/a274537260/article/details/80115164