【转】oracle 随机获取指定量的数据
来源:互联网 发布:linux查看错误日志命令 编辑:程序博客网 时间:2024/05/21 10:33
当我们获取数据时,可能会有这样的需求,即每次从表中获取数据时,是随机获取一定的记录,而不是每次都获取一样的数据,这时我们可以采取Oracle内部一些函数,来达到这样的目的.
select * from (select * from tablename order by sys_guid()) where rownum < N; select * from (select * from tablename order by dbms_random.value) where rownum< N; select * from (select * from table_name sample(10) order by trunc(dbms_random.value(0, 1000))) where rownum < N;说明: sample(10)含义为检索表中的10%数据,sample值应该在[0.000001,99.999999]之间.
其中 sys_guid() 和 dbms_random.value都是内部函数,通过这样的方法,就可以实现我们的需求了.
注:
在使1)方法时,即使用sys_guid() 这种方法时,有时会获取到相同的记录,即和前一次查询的结果集是一样的,我查找了相关资料,有些说是和操作系统有关,在windows平台下正常,获取到的数据是随机的,而在linux等平台下始终是相同不变的数据集,有些说是因为sys_guid()函数本身的问题,即sys_guid()会在查询上生成一个16字节的全局唯一标识符,这个标识符在绝大部分平台上由一个宿主标识符和进程或进程的线程标识符组成,这就是说,它很可能是随机的,但是并不表示一定是百分之百的这样
所以,为确保在不同的平台每次读取的数据都是随机的,我们大多采用2)和3)两种方案,其中2)方案更常用.3)方案缩小了查询的范围,在查询大表,且要提取数据不是很不多的情况下,会对查询速度上有一定的提高,
另:在Oracle中一般获取随机数的方法是:
select trunc(dbms_random.value(0, 1000)) from dual; (0-1000的整数)
select dbms_random.value(0, 1000) from dual; (0-1000的浮点数)
- 【转】oracle 随机获取指定量的数据
- 获取指定日期的随机时间(oracle函数)
- [转]Oracle 随机获取N条数据
- Django 中随机获取指定数量数据
- VB获取指定长度的随机字符串
- java获取指定范围的随机函数
- Oracle 随机获取N条数据
- Oracle,Mysql 随机获取N条数据
- Oracle 随机获取N条数据
- mysql中随机获取排序条件中的指定数量数据
- 指定范围的随机整数的获取方法
- php 从指定数字中获取随机组合的方法
- Android下获取集合指定长度的随机集合
- php 获取指定目录下面的某个随机文件名
- 按权重随机获取相应的数据
- mysql如何随机获取数据的方法
- oracle获取随机记录
- Oracle插入随机生成的数据行
- 关于sql全文检索与lucene效率比较的摘要
- MFC基于对话框的位图加载
- pinphp~
- WebGL自学课程(3):原生WebGL+ArcGIS JS API绘制旋转的地球
- BufferedWriter BufferedOutputStream 区别
- 【转】oracle 随机获取指定量的数据
- Linux文件权限
- 从程序员转向企业家的10个建议
- C++多重继承和虚拟继承对象模型、效率分析
- php连接hive执行HQL查询
- hive中的Lateral View
- Myeclipse9 手动安装maven
- Ubuntu下SVN服务器的简单安装和配置
- 自动应答API memo