随笔 - 132  文章 - 1 评论 - 520 trackbacks - 9
<2005年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我参与的团队

随笔分类

随笔档案

相册

收藏夹

博客链接

技术站点

社区推荐

积分与排名

  • 积分 - 182521
  • 排名 - 271

最新评论

阅读排行榜

评论排行榜

针对“用一条SQL得到数据库中的随机记录集”问题在网上已经有很多答案了:
SQL Server 2000:
SELECT TOP n * FROM tanblename ORDER BY NEWID()
Access
SELECT TOP n * FROM tanblename ORDER BY rnd([一个自动编号字段])


好了!就说说这个Access的!

打开Access2003建立一个带有自动编号字段的表 T1 : id_(auto),content_
随便插入些许记录

然后,点选“查询”新建一个查询,“设计视图”,选择T1,然后选择SQL视图(这样可以写自己的SQL了,比较习惯),好了,写吧:

SELECT TOP 3 [content_] FROM [T1] ORDER BY rnd([id_])

然后运行一下结果,嗯记住了是什么结果哦。

返回SQL视图,再运行看结果,跟上次的不一样!那就对了!(当然你的T1里别只有少于3条的记录呀)

好了,我们是搞WEB开发的!
写个ASP看看

<%

 Dim Con,RS
  Set Con = Server.CreateObject("ADODB.CONNECTION")
  Con.ConnectionString = "Provider=MicroSoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("*.mdb")
  Con.CommandTimeout = 20
  Con.CursorLocation = 3
  Con.Open

  Set RS = Con.Execute("SELECT TOP 3 [content_] FROM [T1] ORDER BY rnd([id_])")
  Do While Not RS.EOF
   Response.Write RS.Fields("content_").Value & "<br />"
   RS.MoveNext
  Loop
  RS.Close
  Set RS = Nothing
  
  
  Con.Close
  Set Con = Nothing
   

%>






在localhost上运行一下这个ASP,看到结果了吧,记住!再F5一下!咦?~~~~~~~~~~~还那个结果!这可不是我们想要的!
当然了,rnd在运行前应该执行Randomize语句的!
可是怎么执行?
Access里支持Randomize么?我的Access也不是很熟,看了一下帮助,只找到了VBS里的那个Randomize……
解决问题是每个程序员最来精神的!
赶紧Google一下!
翻了半天也没有好的解决方案,有的干脆用asp来循环的找position,呸,费了半天劲干什么呢,我就想SQL解决怎么办?

Access里的Randomize不知道怎么用,asp的基本功还会吧?开动脑筋,有了!

<%

 Dim Con,minPID,RS
  Set Con= Server.CreateObject("ADODB.CONNECTION")
  Con.ConnectionString = "Provider=MicroSoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("*.mdb")
  Con.CommandTimeout = 20
  Con.CursorLocation = 3
  Con.Open

  Randomize
  Set RS = Con.Execute("SELECT TOP 3 [content_] FROM [T1] ORDER BY rnd(-(id_+" & rnd() & "))")
  Do While Not RS.EOF
   Response.Write RS.Fields("content_").Value & "<br />"
   RS.MoveNext
  Loop
  RS.Close
  Set RS = Nothing
 
 
  Con.Close
  Set Con = Nothing

%>






嗯,这回再试一试!

OK了!每次F5后都能是“随机”的感觉了



如果您有更好的解决办法或建议请告诉我,谢谢!

posted on 2005-01-06 01:06 搏软狂歌 阅读(1902) 评论(3)  编辑 收藏 网摘 所属分类: WEB开发

FeedBack:
收藏了。。感谢。。
  回复  引用    
很好的实用程序!本人刚刚做一个条件查询系统,看来这段小代码能派上场了。欢迎大家多多交流。QQ:24387481
  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 87095




相关文章:

相关链接: