读书人

求sql话语高手帮忙看下

发布时间: 2013-09-06 10:17:17 作者: rapoo

求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

读书人网 >SQL Server

热点推荐