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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM