日期:2014-05-17  浏览次数:20577 次

求sql语句高手帮忙看下
在做一个在线考试系统,每个班级里面有多个学生,每次考试有多套试卷,这些试卷分配给多个班级。现在想根据学号让学生随机得到分配的试卷,怎么实现:

Users表  UserID  ClassName  学生信息表

Paper_Class ID PaperID ClassID PaperName ClassName  试卷与班级分配结果表

想让学生根据学号随机得到所在班级分配试卷中的一套,求大神指教。。。。

------解决方案--------------------
引用:
这个可以满足一部分人分到试卷,但是问题是没有循环,如果一个班级只有2套试卷人有几十个,这里只有两个人能分到试卷。想让几十个人随机分到那2套中的一套,求如何修改,谢谢啦

--参考:
SELECT a.*,b.*
FROM 
(SELECT rowid=row_number() over(PARTITION BY ClassName order BY UserID), * from 学生信息表) a --楼主还可以把这行里的order by改成order by newid(),随机性更强
LEFT JOIN
(SELECT rowid=row_number() over(PARTITION BY ClassName order BY NEWID()), cnt=COUNT(1) OVER(PARTITION BY Classname), * FROM 试卷与班级分配结果表) b
    ON a.ClassName = b.ClassName
        AND a.rowid % cnt + 1 = b.rowid