asp+access 怎样才能随机抽数据库中的记录?

 asp+access 怎样才能随机抽数据库中的记录?
要求每次抽的都不一样.
网上有这样的说法select top 50 * from tab_st order by rnd(id)

但是这样,每次抽的都是一样的,这样毫无意义.
请高手指点更合适的方法.谢谢

简单高效:不重复随机读取数据库记录

Set rs = Server.CreateObject("Adodb.RecordSet")
rs.open sql,conn,1,1

DIM Appeared
Call DisRndRecord(10,rs.recordCount)'调用函数该位置显示记录

'################SUBS################
'#DisRndRecord(DisNum,rsBound)
'#参数DisNum:显示数量
'#参数rsBound:随机数产生范围
Sub DisRndRecord(DisNum,rsBound)
DIM i,ThisRnd
If rsBound < DisNum Then DisNum = rsBound'记录总数小于要抽取记录条数的情况
For i = 0 To DisNum - 1
ThisRnd = GetRnd(rsBound)'取得一个不重复的随机数
rs.Move(ThisRnd)'游标移动到随机数位置数读取
Response.Write("<br>("&rs("id")&")"&rs("Title"))
rs.Move(-ThisRnd)
Next
End Sub
'# 函数GetRnd(bound)返回一个不重复的随机数字
'#参数bound:随机范围
Function GetRnd(bound)
DIM ranNum
Randomize()
ranNum=int(bound*rnd)
If Instr(Appeared,"["&ranNum&"]") Then'产生的随机数是否出现过
ranNum = getRnd(bound)
End If
Appeared = Appeared & "["&ranNum&"]"'记录已出现的随机数
GetRnd = ranNum
End Function

参考资料:http://www.haishui.net/view.php?id=454 set rs=server.CreateObject("adodb.recordset")
sql="select * from 表"
rs.open sql,conn,1,3'打开数据库表
i=1
dim webon()
do while not rs.Eof'写入数组
Redim Preserve webon(i)
webon(i)=rs("id")
i=i+1
rs.movenext
loop

randomize'随机得到记录
p=Int((rs.recordcount*rnd)+1)'在全部记录中生成随机数
rndid=webon(p)

Set rs=conn.Execute("select * from 表 where id="&rndid)'根据数组,再打开相关随机记录.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值