一个oracle随机取记录的问题
2008-04-10 14:10
281 查看
问题:
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范围的随机数
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范围的随机数
相关文章推荐
- 请教一个问题,Log4Net记录日志到Oracle显示中文乱码如何解决?
- 记录一个关于部署TC时候,ORACLE实例监听的问题
- 关于结构体的一个特殊用法(总觉得遇到的问题就该记录一下哇)
- python-daemon日志记录的一个小问题
- 关于weblogic host name varify 的一个问题记录
- Oracle session连接数和inactive的问题记录(清除方法)
- 记录J-Flash ARM使用过程中的一个纠结问题
- 记录一个关于在event receiver中执行页面跳转的问题
- 这个问题让我疯掉!用oledbcommand执行一个插入一条记录的程序,到现在也没有解决!
- 从oracle表中随机取记录,产生随机数和随机字符串
- Oracle中随机抽取N条记录
- java编程:给你一个班级的名单,随机分成6个组的问题解决办法
- 记录一个PADS下遇到的奇怪的问题----ECO更新报错
- Oracle中的几个问题记录
- centos7 oracle 12c 安装问题记录
- 对于今天的问题的一个记录
- 关于Map的一个问题记录
- 一个容易忽视的Oracle安全问题
- ul 下添加li标签模板后 第一个li前面有一个undefined(问题记录)
- Linux下oracle插入(导入)中文记录显示为问号问题及解决办法