从表中随机取出两条纪录
   从zyz2表中随机取出两条纪录:
SQL> select * from zyz2;
       ID         P1         P2
---------- ---------- ----------
        1        211        212
        2         12         14
        4        241        242
        2        145
        1         11
        3         17          26 rows selected.Elapsed: 00:00:00.50
SQL> select id,p1,p2 from (select zyz2.*,dbms_random.random num from zyz2 order
by num) where rownum<3;       ID         P1         P2
---------- ---------- ----------
        2         12         14
        1        211        212Elapsed: 00:00:00.30
SQL> select id,p1,p2 from (select zyz2.*,dbms_random.random num from zyz2 order
by num) where rownum<3;       ID         P1         P2
---------- ---------- ----------
        3         17          2
        2         12         14
8i以上
select * from (select * from ur_table order by sys_guid()) where rownum<n;
select * from (select * from ur_table order by dbms_random.value) where rownum<n;
dbms_random.value(min,max)  --从min到max之间取值

解决方案 »

  1.   

    select * from (select zyz2.*,dbms_random.random num from zyz2 order
    by num) where rownum<3;
      

  2.   

    我是想问一下dbms_random.random num 是什么参数!!
      

  3.   

    可以用Sasmple(1) or sys_guid()
      

  4.   

    select * from (select * from user_table where c1='name' order by dbms_random.random) where rownum<n
      

  5.   

    SQL> select id,p1,p2 from (select zyz2.*,dbms_random.random num from zyz2 order
    by num) where rownum<3;dbms_random.random ----无效例名
      

  6.   

    select * from (select * from ur_table order by sys_guid()) where rownum<n;这个可以!
      

  7.   

    8i以上才能用的,如果你的数据库不是8i,  建议自己编个随机函数,不难的看看书就可以了。 
    其实也很简单,如将100记录的rowid取出,  令其排成一圈,根据当前时间的分和秒做种子(seed)
    就可产生随机数了。