互联网品牌整合服务·为梦想者创造梦想品牌

服务1000+企业,专注企业网站设计 / 网站制作 / 网站优化推广 网站托管服务

了解详情

致力于服务头部企业.打造标杆项目

让每一个作品融入我们的洞察力,创造并呈现精彩 展现您的非凡与不同

了解详情

网站优化 网站搜索排名

潍坊及全国各地区提供搜索引擎优化服务

了解详情

access数据库随机不重复读取记录

发布时间:2016/4/12 16:32:05 关注:1509


关于使用ASP随机查询数据库中的数据,有两种两见的数据库,即Sql Server和 Access。 
SQL server数据库有个NewID函数,可以很方便的用SQL语句得到数据表中的随机数据。即可以使用以下SQL语句来实现: 
sql="Select top 10 * from TableName order by NewId()" 
Access数据库同样提供一个Rnd函数,可以通过以下SQL语句来实现随机: 
sql="select top 10 * from TableName order by Rnd(id)" 
Rnd(id) 其中的id只是为了提供一个种子,可以利用其他任何数值来完成。在这里Id为主键的值,因为通常而言,主键一般为自动编号字段,即数值型。 
可通过使用后发现,程序在第一次执行时是可以实现随机取得记录,但反复刷新后发现,每次返回的数据都相同。分析后发现,由于Access数据库记录集缓存的原因,从代码里得到Access数据库随机记录是得不到,需要用随机SQL语句的办法来消除缓存。 
有人说在程序中加上Randomize初始化随机种子,这只说对了一半,在程序中简单的加上Randomize,是没作用的,道理很简单,Randomize不可能影响SQL语句中的Rnd,这个Rnd只不过是个字符串,SQL语句是通过数据库引擎去执行的,正因为如此,无法初始化种子,致使每次应用产生的随机序列是一样的。 
由此可见,解决问题的关键就是如何初始化随机种子。Rnd函数语法是Rnd(number),它有一个特性,就是如果使用了负参数的 number,那么就会产生一个固定的随机序列。利用这个特性,我们的问题就迎刃而解了,这就是每次调用Rnd函数时,使用一个负的不同的number,从而达到产生不同随机序列的目的。经过测试,问题解决。使用如下代码即可使用正确的随机。 
Randomize 
sql="select top 10 * from TableName order by Rnd("&Rnd()&"-id)" 

  • 上一条:关于网站不能访问或许是DNS被劫持了
  • 下一条:在潍坊做网站应该注意哪些事项
  • 潍坊网站建设,潍坊网站优化,潍坊网站排名,潍坊网站改版,潍坊网站营销策划,潍坊网站制作,潍坊网站托管,潍坊网站百度排名,潍坊网站培训,潍坊seo培训,潍坊网络公司

    地址:山东省潍坊奎文区新华路乐川街华谊大厦三楼

    网址:http://www.wf168.com/ 垂询电话:

    网站备案:鲁ICP备14027302号-5

    copyright© 潍坊华邦网络有限公司2011-2025