问题产生的来源:ORACLE 批量插入数据 随机取值问题
SQL_0
SELECT d.* FROM temp_cj d where d.idd=trunc(dbms_random.value(1, 4));
temp_cj:
产生随机条记录的原因是:在查询时取得第一条的IDD,然后生成一个随机数,判断是否相等,如果相等存入结果集,然后去第二条记录的IDD,重新产生一随机数,然后进行判断,如此依次执行下去。(不知道本次理解是否有问题,)优化SQL,把随机数设定“固定”:
YH_SQL1
1select d.ds,random
2 from temp_cj d,
3 (select trunc(dbms_random.value(1, 4)) random from dual) random
4 where d.idd = random.random
5
执行发现可以,但是如果查询结果仅仅是ds,还是会产生返回多个记录的结果集。
再次调整SQL:
YH_SQL2
select ds
from temp_cj d
where d.idd = (select trunc(dbms_random.value(1, 4)) random from dual)
如此一来,返回的结果集就是一条随机记录了。
但是,YH_SQL2中的条件判断的随机数是“固定”的吗?就是不论表temp_cj有多少条记录,一次查询中随机数是不变的。从测试结果上看是“固定”的。
问:YH_SQL2中的随机数为什么是"固定"的,而SQL_0的随机数不是呢?
posted @
2010-03-23 15:13 leja 阅读(306) |
评论 (0) |
编辑 收藏
摘要: ORACLE 批量插入数据 有些属性必须从一固定范围内随机取值 random(string[])
阅读全文
posted @
2010-03-23 13:42 leja 阅读(1703) |
评论 (0) |
编辑 收藏