`
coolmaple
  • 浏览: 34739 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

随机读取数据表记录的整理

阅读更多

My sql 2000的写法

方法一、
select top 1 * from yourtable  order by newid()
方法二、
set rowcount 1
select * from run2k..fsjour  order by newid()
set rowcount 0
ACCESS的写法


1。通过recordset游标可移动的特性,在已打开记录集里移动到随机位置读取记录。而且可以将就使用页面中已打开的RS对象。
2。将出现过的随机数保存到一个字符串中,通过instr函数来检查是否重复,重复则递归调用函数至不重复。
数据库打开查询若干,省略... ...
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("<br>("&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

 

MySQL的写法


SELECT * FROM table_name ORDER BY rand() LIMIT 5;
  rand在手册里是这么说的:
  RAND()
  RAND(N)
  返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
mysql> select RAND();
-> 0.5925
mysql> select RAND(20);
-> 0.1811
mysql> select RAND(20);
-> 0.1811
mysql> select RAND();
-> 0.2079
mysql> select RAND();
-> 0.7888

  你不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),这是有利于得到一个来自SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000的集合的随机样本。注意在一个WHERE子句里的一个RAND()将在每次WHERE被执行时重新评估。

  试了一下,8千条记录的表,执行一次需要0.08 sec,.慢了些

  请教了google,得到如下代码

SELECT * FROM table_name AS r1 JOIN ( SELECT ROUND(RAND() * (SELECT MAX(id) FROM table_name)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 5;


 

ORACLE的写法


ORDER BY DBMS_RANDOM.VALUEdbms_random.value(100,200),dbms_random.string('A',10)
SELECT *
FROM (SELECT EMPNO, ENAME FROM SCOTT.EMP ORDER BY DBMS_RANDOM.VALUE)
WHERE ROWNUM <3> 注:dbms_random包需要手工安装,位于$ORACLE_HOME/rdbms/admin/dbmsrand.sql
dbms_random.value(100,200)可以产生100到200范围的随机数
取排序后的前3条记录:
SELECT *
FROM (SELECT EMPNO, ENAME, rownum rn FROM SCOTT.EMP ORDER BY 1)
WHERE rn 取排序后的第4-6条记录:
SELECT *
FROM (SELECT EMPNO, ENAME, rownum rn FROM SCOTT.EMP ORDER BY 1)
WHERE rn between 4 and 6;
11.13 随机产生N个字符串
select dbms_random.string('A',10) from dual;

分享到:
评论

相关推荐

    决策树DTC数据分析及鸢尾数据集分析.doc

    鸢尾花卉Iris数据集 在Sklearn机器学习包中,集成了各种各样的数据集,上节课讲述Kmeans使用的是一个N BA篮球运动员数据集,需要定义X多维矩阵或读取文件导入,而这节课使用的是鸢尾花卉 Iris数据集,它是很常用的...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例245 读取XML文件属性 310 第3篇 窗体与控件应用 第11章 窗体设计 314 11.1 设置窗体位置 315 实例246 控制窗体加载时的位置 315 实例247 设置窗体在屏幕中的位置 315 实例248 从上次关闭位置启动窗体 316 实例...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例243 如何随机显示记录 9.3 查询前若干名数据 实例244 查询前10名数据 实例245 取出数据统计结果前3名数据 9.4 周期、日期查询 实例246 查询指定日期的数据 实例247 查询指定时间段的数据 实例248 按月...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例243 如何随机显示记录 9.3 查询前若干名数据 实例244 查询前10名数据 实例245 取出数据统计结果前3名数据 9.4 周期、日期查询 实例246 查询指定日期的数据 实例247 查询指定时间段的数据 实例248 按月...

    数据结构(C++)有关练习题

    e. 如有可能,请建立一个存储商品名称和数量的文本文件,并为二叉搜索树建立一个成员函数SetupInventory(),用于从该文本文件中读取库存商品的数据, 实验报告要求: 1、 按要求记录下二叉搜索树的完整实验...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例243 如何随机显示记录 9.3 查询前若干名数据 cc实例244 查询前10名数据 cc实例245 取出数据统计结果前3名数据 9.4 周期.c日期查询 cc实例246 查询指定日期的数据 cc实例247 查询指定时间段的数据...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例243 如何随机显示记录   9.3 查询前若干名数据   cc实例244 查询前10名数据   cc实例245 取出数据统计结果前3名数据   9.4 周期.c日期查询   cc实例246 查询指定日期的数据   cc实例247 ...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例243 如何随机显示记录   9.3 查询前若干名数据   cc实例244 查询前10名数据   cc实例245 取出数据统计结果前3名数据   9.4 周期.c日期查询   cc实例246 查询指定日期的数据   cc实例247 ...

    Discuz 2.5 最新版

    推送数据时可以读取多张图片供选择并支持在线剪裁图片;文章图片上传方式改进;优化门户推送功能,并加强推送库管理;生成文章时,可以将当前帖子楼主的所有楼层生成一篇文章;生成文章流程进行整体优化;专题评论增加...

    asp.net知识库

    根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 生成器 将表数据生成SQL脚本的存储过程 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件...

    sysinternals 工具集合 (20090226版)

     Regmon 是一款出色的注册表数据监视软件,它将与注册表数据相关的一切操作(如读取、修改、出错信息等)全部记录下来供用户参考,并允许用户对记录的信息进行保存、过滤、查找等处理,这就为用户对系统的维护提供了极大...

    教师工作助手

    7、随机性增强-通过优化该部分核心,使得所出题目在符合出题者要求的前提下具有最大的随机性,使得同一试卷难度条件下的试题内容尽可能不同。 8、在word预览功能-在选定出题条件的情况下,可以预先浏览试题结构,...

    易语言程序免安装版下载

    易语言5.1 相对于易语言5.0更新说明: ... 修改XML解析支持库,增加写出CDATA数据功能,解决解析XML时错误的丢弃换行和TAB字符的BUG,解决读取节点值时对CDATA数据进行转义处理的BUG。 20. 修改扩展界面支持库...

    delphi 开发经验技巧宝典源码

    0224 利用ADO获取DELETE后所影响的记录数 148 7.3 业务实现数据处理技术 149 0225 随机产生中奖号码 149 0226 使用快捷键保存数据 150 0227 密码只允许输入8位或超过8位 150 0228 如何获取汉字拼音简码 ...

    delphi 开发经验技巧宝典源码06

    0224 利用ADO获取DELETE后所影响的记录数 148 7.3 业务实现数据处理技术 149 0225 随机产生中奖号码 149 0226 使用快捷键保存数据 150 0227 密码只允许输入8位或超过8位 150 0228 如何获取汉字拼音简码 ...

Global site tag (gtag.js) - Google Analytics