当前位置: 代码迷 >> Sql Server >> 求sql话语高手帮忙看下
  详细解决方案

求sql话语高手帮忙看下

热度:49   发布时间:2016-04-24 20:40:56.0
求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
  相关解决方案