求asp+access数据库 按条件是[随机]选取表中N条记录的方法
据网上搜索最多的方法是ORDERBYRND(-(编号字段)*"&RND()&")"用这一句也有的写的是rnd(id)id自动编号但是我用的不好用啊,或许我不会用,望大大们...
据网上搜索 最多的方法是ORDER BY RND(-(编号字段)*" & RND() & ")"
用这一句 也有的写的是 rnd(id) id自动编号 但是我用的不好用啊,或许我不会用,望大大们告诉我具体方法,是不是rnd要提前声明 或者是写好范围之类的东西?怎么写?我的 查询语句是这样的
sqlString="select top 8 * from products where type=21"
目的是查询products表 类别为21的数据 中的8条 我希望这八条是随机的 ,
求解决方法啊 绝对有加分 展开
用这一句 也有的写的是 rnd(id) id自动编号 但是我用的不好用啊,或许我不会用,望大大们告诉我具体方法,是不是rnd要提前声明 或者是写好范围之类的东西?怎么写?我的 查询语句是这样的
sqlString="select top 8 * from products where type=21"
目的是查询products表 类别为21的数据 中的8条 我希望这八条是随机的 ,
求解决方法啊 绝对有加分 展开
3个回答
展开全部
简单高效:碰薯慎不重复随机读取数据库记录
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以在recordset中进行随机输出,不必在sql中纠结。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQL = "Select Top 8 * From 表名 Where Type=21 Order By Rnd(ID)"
不知道这桥雹枝个敏敏是肆芹不是你想要的。
不知道这桥雹枝个敏敏是肆芹不是你想要的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询