学校每次考试要按上次考试成绩从高到低排列,学生按这个排列安排试室及座位。但每次考试都有学生缺考或有新转学进来的学生,这部份学生不会出现在上面的成绩排列中。
这段SQL代码就是找出这些学生,做相应处理。
相关表:
ClassList 学生编班表
| 字段意义 | 字段名称 |
| 学年 | ClassYear |
| 年级 | Grade |
| 班别 | Class |
| 学生编号 | LearnNo |
| ...... | ...... |
TestSeatList 考试座位安排表
| 字段意义 | 字段名称 |
| 考试编号 | TestNo |
| 年级 | Grade |
| 试室号 | Room |
| 座位号 | Seat |
| 学生编号 | LearnNo |
| ...... | ...... |
上面两个表通过LearnNo相关联,因为学生编号只有9位,而考试答题卡是10位的,所以TestSeatList中的LearnNO是在ClassList的LearnNo前面补"0"的,这里要用Substring把它截出来。
- select * from ClassList
- where ClassYear=2008 And Grade=2 And LearnNo not in(select Substring(LearnNo,2,9) from TestSeatList Where TestNO=200810 And Grade=2)
- Order by learnno
该SQL查询用于找出在ClassList表中(2008年2年级)存在,但在TestSeatList表(对应考试号200810)中没有记录的学生。通过比较两个表中的LearnNo,考虑到TestSeatList中的LearnNo前有额外的'0',使用Substring进行处理。查询结果按LearnNo排序。


被折叠的 条评论
为什么被折叠?



