oracle随机取数据
***
針對oracle
1,方法一,所有記錄隨機排序,然后選擇5條記錄
select * from ( select * from t_base_menu order by dbms_random.value) where rownum<=5區別于下面這樣,選擇了5條記錄,然后隨機排序,所以一直是相同的5條記錄
select * from t_base_menu where rownum<=5 order by dbms_random.value取出前10條記錄的后5條,順序不變
select * from (select t.menu_name,rownum as myrow from t_base_menu t where rownum<=10 order by rownum desc) a where rownum<=5 order by a.myrow asc?
下面介紹一下dbms.random:
dbms.random是oracle提供的一個隨機函數包
測試一:隨機生成一個數
dbms_random.value用法:
生成一個大于等于0,小于等于1的38位小數?
select dbms_random.value from dual;
輸出:0.395461555239436
測試二:指定范圍
select dbms_random.value(100,0) from dual;
輸出:54.4656475243638
select dbms_random.value(0,8) from dual;
輸出:7.5896620684203
?
下面介紹rownum:
oracle對查詢出來的結果集,加上的序列號就是rownum,總是從1開始
---rownum>1得不到任何數據,因為第一條記錄的rownum=1,不符合條件,所以刪除,這樣使得下一條記錄的rownum又是1,
這樣下去,所以的記錄都不滿足條件,自然得不到結果,而rownum>=1,或者rownum>0可以得到所有記錄,
同理,between 0 and 10,between 1 and 10可以得到10條記錄
而between 2 and 10沒有結果
2,方法二
?
****
參考地址:http://yisean.iteye.com/blog/608581
轉載于:https://www.cnblogs.com/qingmaple/p/4149253.html
總結
以上是生活随笔為你收集整理的oracle随机取数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LINQ 101——分组、Set、转换、
- 下一篇: 怎样新建Oracle数据库