如题:
      如何从一张表中随机抽取一条记录!      值得注意的是:表可以是大表,也可以是小表。

解决方案 »

  1.   

    select * from consume SAMPLE(10) where rownum<2;
      

  2.   

      sample 只适合抽取大表中的记录!
      并且不好使!有误差!
      

  3.   

    --使用oracle提供的随机数包
    SELECT * FROM (SELECT * FROM t ORDER BY dbms_random.value) WHERE rownum < 2;
      

  4.   

    --使用sys_guid函数
    SELECT * FROM (SELECT * FROM t ORDER BY sys_guid()) WHERE rownum < 2;
      

  5.   


    select * from emp where rownum=1
      

  6.   

    经过多次验证 
    SELECT * FROM (SELECT * FROM t ORDER BY sys_guid()) WHERE rownum < 2;这个的效率高些
      

  7.   

    select * from 
    (
    select * from tb
    order by sys_guid()
    ) where rownum=1select * from 
    (
    select * from tb
    order by dbms_random.value()
    ) where rownum =1 --经过验证,后者效率更高,数字比较与字符比较效率高
      

  8.   

    select top 1 * from  table   order by newID()