关于随机,排序的问题

比如表里面有10条记录,要求每次都以随即的顺序逐条取出插入另外的一个表里面

我想到的是利用dbms_random自己写个算法,先random(10),然后random(9)......这样把他们取出来
可是感觉这个办法比较笨,不知道各位高手还有没有其他好的办法可以借鉴的。帮忙帮忙啊,分是大大的有~~~
-------------------------------------------------------------------------
select * from (select rowid id,t.* from your_table t)
where id=trunc(dbms_random.value(1,10))

关于随机抽取记录的办法还有(8i支持)
select * from (select * from your_table order by sys_guid()) where rownum < 2;

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

---------------------------------------------------------------
从zyz2表中随机取出两条纪录:
SQL> select * from zyz2;
ID P1 P2
---------- ---------- ----------
1 211 212
2 12 14
4 241 242
2 145
1 11
3 17 2

6 rows selected.

Elapsed: 00:00:00.50
SQL> select id,p1,p2 from (select zyz2.*,dbms_random.random num from zyz2 order
by num) where rownum<3;

ID P1 P2
---------- ---------- ----------
2 12 14
1 211 212

Elapsed: 00:00:00.30
SQL> select id,p1,p2 from (select zyz2.*,dbms_random.random num from zyz2 order
by num) where rownum<3;

ID P1 P2
---------- ---------- ----------
3 17 2
2 12 14

---------------------------------------------------------------

现在不是每次顺序不一样吗?你绝对要求他每次不重复不可能,它是随机的,不知道下一次会取那条记录。

Published At
Categories with 数据库类
comments powered by Disqus