Posted on November 20, 2007
问题:
关于如何生成随机记录(二) 如何从指定表中随机抽取一定量的记录? sql server 中 select top 10 * from 表 order by newid(); 在access中如何实现? 为什么我每次 select top ?? ... from... rnd(id) 的结果都一样呢? |
方法一:
在ACCESS环境中用rnd函数解决,非常简单
以下查询展示了如何从表中随机抽取10条记录
其中 Rnd(id) AS bb 只是为了说明其原理,完全可以去掉。 另外, Rnd(id) 其中的id只是为了提供一个种子,可以利用其他任何数值来完成 id字段是自动编号字段,你也可以用其他字段代替,只要能生成数值就行,比如我用姓名字段
示例下载: http://access911.net/down/eg/eg_rnd.rar (9KB)
|
方法二:
在ASP、VB中无法使用上述方法,可以参考使用adodb.recordset.recordcount 属性以及 adodb.recordset.AbsolutePosition 以及 RND 函数来解决问题。
|
方法三:
用当前 TIME 做种子生成随机数。如果时间重复最终还是重复,没有从根本上解决问题,说白了还是种子的问题。要不重复就要彻底解决种子的问题,如果能取得毫秒级时间就基本能解决了
或者建议在组织 SQL 语句的时候有意插入一个 VB 函数生成的随机值作为种子也可以
|