永发信息网

求asp+access数据库 按条件是[随机]选取表中N条记录的方法

答案:3  悬赏:20  手机版
解决时间 2021-02-25 02:10
  • 提问者网友:你独家记忆
  • 2021-02-24 15:53
据网上搜索 最多的方法是ORDER BY RND(-(编号字段)*" & RND() & ")"
用这一句 也有的写的是 rnd(id) id自动编号 但是我用的不好用啊,或许我不会用,望大大们告诉我具体方法,是不是rnd要提前声明 或者是写好范围之类的东西?怎么写?我的 查询语句是这样的
sqlString="select top 8 * from products where type=21"
目的是查询products表 类别为21的数据 中的8条 我希望这八条是随机的 ,
求解决方法啊 绝对有加分
最佳答案
  • 五星知识达人网友:风格不统一
  • 2021-02-24 16:51
可以在recordset中进行随机输出,不必在sql中纠结。
全部回答
  • 1楼网友:慢性怪人
  • 2021-02-24 19:13
简单高效:不重复随机读取数据库记录 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(" ("&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
  • 2楼网友:酒者煙囻
  • 2021-02-24 18:10
SQL = "Select Top 8 * From 表名 Where Type=21 Order By Rnd(ID)" 不知道这个是不是你想要的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯