求sql语句高手帮忙看下
在做一个在线考试系统,每个班级里面有多个学生,每次考试有多套试卷,这些试卷分配给多个班级。现在想根据学号让学生随机得到分配的试卷,怎么实现:
Users表 UserID ClassName 学生信息表
Paper_Class ID PaperID ClassID PaperName ClassName 试卷与班级分配结果表
想让学生根据学号随机得到所在班级分配试卷中的一套,求大神指教。。。。
[解决办法]
--参考:
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