关于如何生成随机记录
方法一:
在ACCESS环境中用rnd函数解决,以下查询展示了如何从表中随机抽取10条记录
SELECT top 10 * FROM tbl1 ORDER BY Rnd(id)
另外, Rnd(id) 其中的id只是为了提供一个种子,可以利用其他任何数值来完成
id字段是自动编号字段,也可以用其他字段代替,只要能生成数值就行。
如果每次RND得到的结果都一样,那是因为没有使用 Randomize 语句来初始化随机数生成器。
方法二:
在ASP、VB中无法使用上述方法,可以参考使用adodb.recordset.recordcount 属性以及 adodb.recordset.AbsolutePosition 以及 RND 函数来解决问题。
Function RndID()
Dim rs As New ADODB.Recordset
Dim strsql As String
strsql = "select * from tbl1"
rs.CursorLocation = adUseClient
rs.Open strsql, CurrentProject.Connection, 2, 3
'在Access中可以使用 CurrentProject.Connection,
'其他语言中可以用 ADODB.CONNECTION对象。
Dim i As Long
Dim lngCount As Long
Dim lngRnd As Long
lngCount = rs.RecordCount
'一下取前10条随机记录
For i = 1 To 10
lngRnd = Int((lngCount * Rnd) + 1)
rs.AbsolutePosition = lngRnd
Debug.Print rs("id")
Next
End Function
方法三:
用当前 TIME 做种子生成随机数。如果时间重复最终还是重复,没有从根本上解决问题,说白了还是种子的问题。要不重复就要彻底解决种子的问题,如果能取得毫秒级时间就基本能解决了
或者建议在组织 SQL 语句的时候有意插入一个 VB 函数生成的随机值作为种子也可以
Dim sql
Dim RNUM
Randomize
RNUM = Rnd
sql = "select top 1 * from tbl1 order by rnd(" & RNUM & "-id)"
其中,方法三已经经过验证,可以使用。
附:
关于用 SQL 得到 Access 的随机记录集
此问题早已有人提出,解决的方法也非原创。写这篇东西,意在共同探讨。毕竟目前还没有非常满意的结论。先说说现在网上大多数转贴是这样说的:
SQL Server 2000:
SELECT TOP n * FROM tanblename ORDER BY NEWID()
Access:
SELECT TOP n * FROM tanblename ORDER BY rnd([一个自动编号字段])
SQL 有了 NEWID() 就无须多讲拉,但 Access 中没有,所以寄望于 RND,实际上这条语句在 Access 中的“查询”中是可以运行并得到随机结果的,但在 ASP 中却无法得到预期的随机效果——无论如何刷新得到的结果都是一样的(就算在语句前加上 Randomize 也一样于事无补)。
当然,也不少其他的解决方法,用数组的,用循环的……不好说不对,但总觉得跑题了。后来有另外的朋友试验出这个方法:表 TestTable,有自动编号字段 TestID,标题字段 TestTitle,随机取得5条纪录,用代码:
Randomize
SELECT TOP 5 [TestTitle] FROM [TestTable] ORDER BY Rnd(-(TestID+"&Rnd()&"))
实际上,我目前需要应用到随机纪录的地方就是用的这条语句,除此我没有其他更好的方法(但用过才知道,其实这条语句偶然会生成重复纪录的)。也许你会有更好的方法……
转载于:https://www.cnblogs.com/cole2295/archive/2009/07/11/1520997.html
关于如何生成随机记录相关推荐
- 简单的键盘按键记录(无码)/虚拟地址转物理地址/生成随机字符串/计算字符串哈希
最近看到 一个 样本 ,里面有键盘 按键记录的功能 ,而且 实现也比较 简单,运行 记录 的效果还 不错 .主要思路如下 : //假代码 int i=0;for(i=0;i<0x100;i++) ...
- 【Sql Server】数据库变量表和临时表的区别,并运用变量表遍历和随机生成姓名记录
作者:小5聊 简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑 公众号:有趣小馆,一个有趣的关键词回复互动功能 目录 1.表变量 1.1.表变量基本信息 1.2.表变量使用场景 1.3.表 ...
- python生成随机骨料模型代码_Abaqus Python脚本-3D随机球形骨料的生成
hello,大家晚上好,今天是2020/11/30,周一晚上11点30.脚本时间 又是一个安静的晚上,一个人躲在房间里....写专栏.在脚本文集里,上次分享了一个关于脚本的工具,上上次分享了一个2D的 ...
- 如何生成随机不重复的11位数字
要求 不重复 随机 11位数字 不占存储 我们都知道11位数字(random)对应有最大值max和最小值min99999999999和10000000000.很简单的从最小值开始按顺序分发到最大值,就 ...
- 在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码...
只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这 ...
- 如何生成随机的字母数字字符串?
我一直在寻找一种简单的 Java算法来生成伪随机的字母数字字符串. 在我的情况下,它将用作唯一的会话/密钥标识符,在"超过500K+世代中"可能"是唯一的(我的需求实际上 ...
- oracle取整函数 kettle,怎样使用Kettle生成随机样本数据
一.问题背景 很多数据工程师都会遇到一种情况,即部分数据不是来源于真实场景,而是需要随机生成.虽然从严格意义上讲,随机意味着有统计规律的实验结果,但在大部分ETL场景下,随机指的是伪随机数据.本文试图 ...
- MySQL 生成随机数字、字符串、日期、验证码以及 UUID
文章目录 生成随机数字 生成 0 到 1 之间的随机数 生成指定范围内的随机数 生成 6 位数字手机验证码 生成遵循正态分布的随机数 生成随机字符串 生成固定长度的随机字符串 生成可变长度的随机字符串 ...
- mysql随机生成数据并插入_python生成随机数据插入mysql
import random as r import pymysql first=('张','王','李','赵','金','艾','单','龚','钱','周','吴','郑','孔','曺','严' ...
最新文章
- JAVA学习笔记--数组初始化
- 统计学习方法第二章作业:感知机模型原始形式与对偶形式代码实现
- prim算法_贪心算法详解(附例题)
- 选购工业交换机时,工业交换机的IP等级多少比较合适?
- 6491: Daydream
- mongo db 分享 ppt
- hdu 2089 不要62--数位dp入门
- mysql建立唯一索引升序_MySQL数据库SQL优化技巧六之唯一索引
- 泰勒公式到欧拉公式的推导
- 篮桥杯,翻硬币 (贪心)
- 《2022,自我增值的7个好习惯》读书笔记
- 正则表达式元字符查询
- java 时间戳最大值_Java中在时间戳计算的过程中遇到的数据溢出问题解决
- 随机生成稀疏矩阵_面向异构众核超级计算机的大规模稀疏计算性能优化研究
- 如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)
- 孩子到底是食物过敏?还是食物不耐受?
- 文件存储的实现-login登录案例1-内置存储
- 绘制思维导图的作用是什么?怎样绘制思维导图
- 搞清FT , DFT , DTFT , DFS之间的关系
- 千万下载量开源软件托管给陌生人 植入恶意代码窃取用户密币
热门文章
- 【三种可能问题】RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED
- 解决方法WindowsError: [Error 193] %1 is not a valid Win32 application
- HTTP/1问题和HTTP/2解决思路
- 实现对文本的简单one-hot编码
- android启用其他应用程序,杀死Android上的另一个应用程序?
- 1.NET 4.6.1向.NET core 2.0项目迁移(HelloWorld篇)
- 一个项目学会前端实现登录拦截
- Windows Mobile设备操作演示准备工作小记
- AngularJS学习笔记二:AngularJS指令
- C# 发送电子邮件(含附件)用到的类 system.web.mail