SQL语句 高手来

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:05:02
一个表CLASS 三个字段学生号 studentid ,课程号 classid,成绩scores
得出 每门课的前两个学生的学生号,课程号,成绩并按成绩排序
关键是 每门课的前两个学生的学生号 怎么写 排序可先不考虑
放在一个记录集里
2楼的 不对啊 运行了一下 说对象名“CLASS”无效

SELECT aa.studentid,aa.classid,aa.scores FROM CLASS AS AA JOIN CLASS AS a1 ON AA.studentid=a1.studentid
WHERE aa.classid=a1.classid and aa.scores>=(
SELECT min(scores) FROM (SELECT TOP 2 scores FROM CLASS WHERE classid=a1.classid ORDER BY scores DESC) t)
ORDER BY classid,scores DESC

SELECT * FROM CLASS AS T WHERE studentid IN
(SELECT TOP 2 studentid FROM CLASS WHERE classid = T.classid ORDER BY scores DESC)
ORDER BY g,n DESC

方法1对于分数并列的情况,是取出全部并列,如有10个人是并列第二,则这10个人都取出。
方法2对于并列情况只随取出1个,舍弃其他并列

SELECT * FROM class where studentid in (select top 2 studentid from class order by scores desc) order by scores desc

不知道你是不是要这种效果的。