如何随机选取n条记录或者对记录作随机排序? select * from (SELECT * FROM tablename ORDER BY dbms_random.value) where rownum <= 3 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select * from tablename where rownum <= 3 因为 duanzilin(寻) 的方式用到了排序,对于大量数据,必然会耗费较多时间,也可能耗费临时表空间,因此如果有10万条数据的话,建议用随机采样函数 SAMPLE:SELECT * FROM (SELECT *FROM B SAMPLE(0.01)) WHERE ROWNUM<=3;内层查询获取 10万 * 0.01% 大约 10条左右的数据,不需要排序,而且每次的结果也不同 楼上说的没错,random函数确实消耗比较大,但是更符合用户需求,有时候牺牲下性能上代价也在所难免的;SAMPLE函数局限性太大,在子查询,视图,存在表连接的时候都不能使用,而且查询间隔周期短的时候,随机性太低,一般都很少用到可以看到下面例子,前面连续执行3次结果一样的,要有一定时间间隔才能体现随机性SQL> create table TEST(COL1 NUMBER,COL2 VARCHAR2(50),COL3 VARCHAR2(50));Table createdSQL> INSERT INTO test SELECT ROWNUM,'N' || ROWNUM,'V' || ROWNUM FROM dual CONNECT BY ROWNUM <=10000;10000 rows insertedSQL> COMMIT;Commit completeSQL> SELECT * FROM (SELECT *FROM test SAMPLE(0.1)) WHERE ROWNUM<=3; COL1 COL2 COL3---------- -------------------------------------------------- -------------- 890 N890 V890 1637 N1637 V1637 1176 N1176 V1176SQL> / COL1 COL2 COL3---------- -------------------------------------------------- -------------- 890 N890 V890 1637 N1637 V1637 1176 N1176 V1176SQL> / COL1 COL2 COL3---------- -------------------------------------------------- -------------- 890 N890 V890 1637 N1637 V1637 1176 N1176 V1176SQL> / COL1 COL2 COL3---------- -------------------------------------------------- -------------- 4325 N4325 V4325 2023 N2023 V2023 2294 N2294 V2294 oracle 函数 挑战 请教各位大锅--oracle 回收站问题 DATE字段 取出到VARCHAR2,时分秒丢失的问题 关联表查询问题 SqlServer的存储过程怎么写??? 高版本导低版本库报错(紧急) oracle客户端安装网络配置怎么都配都不行啊 请问,当我写了个备分脚本,需要保存在哪个位置,才能被调用 关于查询的问题 如何察看oracle数据库的字符集是什么? 在oracle中怎样实现sqlserver中的 isnull(tab.field,"aa") 请大家指教!!!!!! 怎样设置ORACLE自动断开长时间不用的连接
因为 duanzilin(寻) 的方式用到了排序,对于大量数据,必然会耗费较多时间,也可能耗费
临时表空间,因此如果有10万条数据的话,建议用随机采样函数 SAMPLE:SELECT * FROM (SELECT *FROM B SAMPLE(0.01)) WHERE ROWNUM<=3;内层查询获取 10万 * 0.01% 大约 10条左右的数据,不需要排序,而且每次的结果也不同
---------- -------------------------------------------------- --------------
890 N890 V890
1637 N1637 V1637
1176 N1176 V1176SQL> / COL1 COL2 COL3
---------- -------------------------------------------------- --------------
890 N890 V890
1637 N1637 V1637
1176 N1176 V1176SQL> / COL1 COL2 COL3
---------- -------------------------------------------------- --------------
890 N890 V890
1637 N1637 V1637
1176 N1176 V1176SQL> / COL1 COL2 COL3
---------- -------------------------------------------------- --------------
4325 N4325 V4325
2023 N2023 V2023
2294 N2294 V2294