mysql 查询

问题:请用一条sql语句找出每个学生考的最好的成绩

方法一:

mysql 查询

 首先,我们需要将这些学生通过名字和分数进行排序,通过名字,将一为同学的数据放到一起来,通过分数的降序,将高分排到上面。

select name,scores from result2 order by name asc,scores desc;

mysql 查询

然后,我们可以将上面查询的结果看成一个小小的表,再对这个表进行查询,来达到我们的目的,因为group by只返回一条数据。

select * from (select name,scores from result2 order by name asc,scores desc) as b group by name; 

mysql 查询

 

方法二:

直接通过max()取最大值,

mysql 查询

 

这两种方法都有个小问题, 当 id=6的liu的分数为100时,结果是错误的。

mysql 查询

mysql 查询

mysql 查询 

没想得通是为什么。哪位高手看了能帮我解答一二?且小弟还比较菜,若哪里还有问题,欢迎指出。感激不尽!!