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