当前位置:首页 > 网络编程 > 数据库 > Oracle > oracle随机取记录

oracle随机取记录

点击次数:28 次 发布日期:2008-11-22 16:29:52 作者:源代码网
源代码网推荐

在itpub上提出了问题,没人理。自己解决吧。是个笨方法,想不出好的了。

    问题:

    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范围的随机数

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华