如何在数据库中随机取出3条数据?有一个50条数据,我想每次取3条,并且不停的取。

解决方案 »

  1.   

    select * from (select t.*, rownum rn from t order by dbms_random.value ) where rn <= 3;
      

  2.   


    应是:
    select * from (select t.*  from t order by dbms_random.value ) where rownum <= 3;
      

  3.   

    --除了dbms_random包外,还可以用sys_guid函数
    SELECT * FROM (SELECT * FROM t ORDER BY sys_guid()) WHERE rownum <= 3;
      

  4.   

    SELECT * FROM (SELECT * FROM gm_user ORDER BY sys_guid()) WHERE rownum <= 3;select * from (select t.* from gm_user t order by dbms_random.value ) where rownum <= 3;
    这两种都可以,学习了
      

  5.   

    1. 使用dbms_random
    select * from emp order by dbms_random.value(1, 5000);
    select * from emp order by dbms_random.random;

    2. 使用sys_guid;
    select * from emp order by sys_guid();

    3. 使用sample
    大表用这种方式比较快
    select * from emp sample(50);  --抽样50%
    select * from emp sample block(50); -- 读取emp表 50%的block