有一个学生表,里面有 学号 功课编号 学生成绩三个字段.
用一个SQL查询语句得出每门功课成绩最好的前两名
学号 功课编号 学生成绩
1 1 99
2 1 98
3 1 100
4 2 88
5 2 87
6 2 88
7 3 99
8 3 88
9 3 100
解决方法
SELECT DISTINCT 学生表1.*
FROM 学生表 学生表1 where 学生表1.学号 IN
(SELECT TOP 2 学生表.学号
FROM 学生表
WHERE 学生表.功课编号 = 学生表1.功课编号
ORDER BY 学生成绩 DESC)
查询结果
学号 功课编号 学生成绩
1 1 99
3 1 100
4 2 88
6 2 88
7 3 99
9 3 100
从IN的用法上看,SELECT TOP 2 返回两个学号,SQL语句因仅有两个结果。个人的理解有限,不知道是怎样产生了两条以上的结果也好以后应用在工作中。还有就是同时想问一下自连接是如何运行的。谢谢。
分享至:

版权声明:本文为weixin_31632529原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。