oracle 与sql serve 获取随机行数的数据
  TEZNKK3IfmPf 2023年11月13日 22 0

oracle 与sql serve 获取随机行数的数据

Oracle 随机获取N条数据
    当我们获取数据时,可能会有这样的需求,即每次从表中获取数据时,是随机获取一定的记录,而不是每次都获取一样的数据,这时我们可以采取Oracle内部一些函数,来达到这样的目的
1) select * from (select * from tablename order by sys_guid()) where rownum < N; 
2) select * from (select * from tablename order by dbms_random.value) where rownum< N; 
3) 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字节的全局唯一标识符,这个标识符在绝大部分平台上由一个宿主标识符和进程或进程的线程标识符组成,这就是说,它很可能是随机的,但是并不表示一定是百分之百的这样.

SQL serve 中获取随机行数数据的方式如下:

select top N  * from  table_Name order by newid();

但是类似oracle 的使用rand 是没有结果的。

以上就是一些记录

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月17日   46   0   0 dremiosqltable
  TEZNKK3IfmPf   2024年04月26日   49   0   0 java数据库sql
  TEZNKK3IfmPf   2024年05月17日   48   0   0 sqlmysql
  TEZNKK3IfmPf   2024年05月17日   36   0   0 sqlcube
  TEZNKK3IfmPf   2024年04月19日   35   0   0 Oracle
  TEZNKK3IfmPf   2024年04月26日   25   0   0 javasql
  TEZNKK3IfmPf   2024年04月19日   50   0   0 sqlUser
TEZNKK3IfmPf