比如数据库中有许多条数据,能在数据库中如何随机取数据吗??简单一点的
解决方案 »
- 分页...............
- oracle中由出生年月获得年龄
- 请教 在PLSQL中 声明一个TALBE类型的数组,如何查询其中是否包含某个值
- 用java的RowSet的时候报错
- 新手求助Oracle基础问题!跪求高人帮忙在线等
- 数据显示问题
- 弱弱的问在SQL*plus中可否一下子创建多张表?
- 那位更给个Oracle 9i Release2 for windows的下载地址,这先谢谢了
- 关于数据库链接(database link)的两个问题
- 有关oracle触发器的问题-----急,急!!!!!
- 在ORACLE中用触发器实现主键功能报错!
- 如何在oracle9i 中date只存储时间而不存日期
select dbms_random.value from dual
select * from Ytab sample(N) seed(S)sample(N),N是在区间[0.000001,100)之内的数,可以称呼为命中率.表格或者视图的数据越多则这个函数的效果越好。这个函数在某些时候还是非常有用的.SEED(S)中的S介于[0,4294967295]之间,该函数主要是用于保证返回的结果集合和前次的同样S取值的一样.
seed(s)可以省略。注意,这是在9i,10g上测试过,更早的版本不知道是否有。
但得出的结果不是我要
(select * from MYD )原结果如下:
1 23123 dzh 123123
2 123123 ddd 123123
......
运行(select dbms_random.value from dual)0.82037205153201932436955114873964863588
........
我的意思就是出来的结果感动在一列上了,我想要的是随机的一条记录,谢谢当然谢谢你的帮助!!!!
而且问一个如果在access里面可以跑吗,??还有就是这句话不怎么明白 SEED(S)中的S介于[0,4294967295]之间,该函数主要是用于保证返回的结果集合和前次的同样S取值的一样.
红线部分,谢谢
原理还是一样,就是设置条件
让rownum等于一个随机的自然数,而且这个自然数在1到总行数之间;m:=trunc(dbms_random.value*N)+1
select * from MYD where rownum=m;这里的N是MYD的总行数,trunc(dbms_random.value*N)在0到N-1之间,
trunc(dbms_random.value*N)则在1到N之间,恰好是rownum的范围;遗憾的是,这里的m,N都必须另外得到,无法在一条语句中得到;
即使可以在一条语句中得到,
select * from MYD where rownum=trunc(dbms_random.value*N)+1
也无法达到你想要的效果,这样做可能不返回或者返回多条随机记录;其实4楼的方法很有意思,只是可能不是你想要的。
from
(
select * from your_table order by dbms_random.value
)
where rownum <= 10
随即10条
SELECT TOP 1 *
FROM my
ORDER BY Rnd(id);