sql server查询每门课程的前两名的学生编号,课程编号,成绩并排序 |
您所在的位置:网站首页 › sql查询前五名成绩 › sql server查询每门课程的前两名的学生编号,课程编号,成绩并排序 |
数据结构介绍: 成绩表(编号,学号,科目编号,成绩) SQL基础了解: select * from 成绩表 对于Sql Server它查询的过程是逐条查询的,也就是一条一条记录进行查询的; 那么我们可以先思考下,当它查“成绩表”时,第一条成功后才查询第二条的;
假设查特定的一门科目的最高分值前2条记录: select top 2 * from 成绩表 where 科目编号=1 order by 成绩 DESC
那么当要查询每一门科目成绩的前两条,就可以这样思考: select 查询到第一条时,会得到 (编号,学号,科目编号,成绩), 那么这一条记录是否符当前成绩是当前科目最高分的前两条件呢? 上边已经处理为取前两条的方法了,那么这里进行下应该就可以了: select 学号,科目编号,成绩 from 成绩表 AS A
where 学号 in ( select top 2 学号 from 成绩表 AS B where B.科目编号=A.科目编号 order by 成绩 DESC)
上面的脚本可以理解为: 因为查询是逐条的,所以(黄色区域)可以理解为,当第一条数据获取后就进行条件判断; 学号是否存在于当前记录中科目最高成绩的前两条; 子查询部分就是当前这条记录的科目最高成绩的前两个学号 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |