乙個oracle隨機取記錄的問題

2021-04-16 16:03:12 字數 770 閱讀 7105

問題:

select * from

(select * from t order by dbms_random.value)

where rownum = 1;

隨機取表中的 1 條資料;

現在想實現取出的資料不是按平均的概率出現,而是按指定的概率。比如表中的資料是 a、b、 c、 d、 e 5條記錄,指定出現的概率為5、4、3、2、1;也就是說,隨機取出一條記錄,取出a的可能性有5/15,取出e的可能性為1/15。

解決:建乙個15條記錄的表t1,記錄是5個a,4個b,3個c,2個d,1個e;

然後查詢就是了:

select * from

(select * from t1 order by dbms_random.value)

where rownum = 1;

雖然笨點,目的達到了。

另附隨機抽取前n條記錄的常用方法

8i以上版本

1)select * from (select * from tablename order by sys_guid()) where rownum < n;

2)select * from (select * from tablename order by dbms_random.value) where rownum< n;

注:dbms_random包需要手工安裝,位於$oracle_home/rdbms/admin/dbmsrand.sql

dbms_random.value(100,200)可以產生100到200範圍的隨機數

乙個oracle隨機取記錄的問題

在itpub上提出了問題,沒人理。自己解決吧。是個笨方法,想不出好的了。問題 select from select from t order by dbms random.value where rownum 1 隨機取表中的 1 條資料 現在想實現取出的資料不是按平均的概率出現,而是按指定的概率。...

今天碰到了乙個取 REMOTE USER 的問題

asp.net中,當設定web.config中認證方式為 windows 時,程式中 request.servervariables remote user 能取到值。但是設成 forms 或者 none的時候,就取不到了,request.servervariables remote user 返回...

記錄Python條件判斷if語句的乙個問題

nbrlist1 if nbrlist1 print gg if nbrlist1 and 5 len nbrlist1 0 0 30 print gg if 5 len nbrlist1 0 0 30 print gg traceback most recent call last exec co...