如何在SQL Server Store Procedure中对一个表的记录进行随机提取?(100分)

  • 主题发起人 主题发起人 enter_von
  • 开始时间 开始时间
E

enter_von

Unregistered / Unconfirmed
GUEST, unregistred user!
背景:
ASP+SQLServer 开发远程教育中的在线考试系统,
需要在试题库里随机抽取题目组成考卷,
现在问题是如何在Store Procedure中读取随机的题目??
我查询了以往帖子,其中
http://www.delphibbs.com/delphibbs/dispq.asp?lid=390081
里,g622提到的方法不行啊!!
因为rand(a+b*0.0001)对每条记录来说,每次结果一样啊!
有没有更好的方法啊,请大家指教(希望用SP完成处理)
 
@intid=celing(rand()*100)//1000代表你的测试题的数目
付给id号
 
to ugvanxk:
可能我说得不够具体,
因为是在table了选出符合条件的记录集(譬如是按章节select出来)
所以可能没有连续的ID号,

希望在给提议
 
你先把结果集的ID(也可能是其它唯一标识)
赋给一个数组,
然后随机提取数组的上下标
不就行了!

也可以这样:
Table1.RecNo:=Random(Table1.RecordCount-1);
 
即使没有连续的id也没有关系,
1、计算出选出符合条件的记录的个数n
2、计算Rand(n)
3、打开符合条件的记录集,然后利用游标向前移动Rand(n)

 
注意: 打开记录集时一定要按唯一确定记录的列排序,因为数据库中是没有行的概念的


 
to:onlyonekgx
我说了使用SP做啊,没有有table1
to:spear
谢谢提醒,找到解决方法了
由于我的数据量不是很大,所以用游标里fetch的absolute就可以了,^_^
 
多人接受答案了。
 
后退
顶部