set @classid=0
Set @classid=0
select @r=count(*) from student
while @r>=1
select top 1 @classid1=classid from student where flag=0 order by newid()
--当第二次随机选择的学生的班号classid与第一个相同时,循环重取
while @classid1=@classid2
select top 1 @classid1=classid from student where flag=0 order by newid()update student
set flag=1 --设置已被选择的标记,没被选择设置为0
insert into studentexam --随机选择的学生插入考试库
select * from student where classid=@classid1
set @classid2=@classid1
set @r=@r-1以上存储过程,每次按排时,总还是有很少的学生班号相邻,不知何故?应该问题出在第二while处,
解决方案 »
- 怎么判断是系统返回的错误还是自己RAISERROR出来的错误?
- 两条DELETE语句可以通过UNION连接吗?
- 询问SQLSERVER 数据库,如何关闭 警告: 已创建表 '#Temp_Export_Customer',但其最大行大小 ...的信息..
- 在SQLserver里面写fp tree算法,运算会比在C#里面写快吗?
- 大访问量时SQL Server数据库关注指标
- 一个局域网内的机器通过internet与另一个局域网内的SQL Server连接,为什么总是3几分钟就断掉了?
- SQLserver算法
- 请问COMMIT TRANSACTION命令是什么时候工作?
- 求救:nvarchar(或varchar)字段的值中含有n个换行,如何在取一批记录(多个字段)时将换行去掉并返回?真的急!急急!急急!急!(tcyun)
- 关于SQL Server的varBinary!
- 求一语句
- 如何查询一张表中第3-到6条的数据阿?
while @classid1=@classid2
select top 1 @classid1=classid from student where flag=0 order by newid()如果取studentexam 中最后的记录的 clssid来比较