一、问题:求每位学生最高成绩的科目名称。
表结构与数据如下图所示:
期望的结果为:
二、解决方法:
1、第一眼看上去这个问题挺简单的,只接写:
感觉上是对的,那么验证下看看结果:select StuName,max(StuScore)as StuScore,StuSubject from example group by StuName;
和期望的结果不一样,StuSubject列的信息和所提供的数据不符(为什么不符,后篇继续思考)。 2、正确的写法应该是:
select a.StuName,a.StuScore,a.StuSubject from example as a,(select StuName,max(StuScore) as MaxStuScore from example group by StuName) as b where a.StuName = b.StuName and a.StuScore = b.MaxStuScore
三、感想:遇到问题不能想当然,需要认真思考和实践,才能真正解决问题。
时间有限,先写到这里。