oracle取随机数问题

譬如,我要取1-10之间的整数,我可能要取两次,假如第一个取的是5,第二次取的时候我不想取5,只能从没取的当中来取随机,能实现吗?希望高手不吝赐教
谢谢这位专家,你的结果你看了吗?ta是什么?如果取随机数至少应该是dual中取,再一个,你取出来的根本不是数,是字符
我知道是这么取,但是取完了会有重复,这里的关键不是怎么取随机数,而是怎么不让它重复
select num from
(select round(dbms_random.value(1,10)) num from dual union all
select round(dbms_random.value(1,10)) num from dual) order by num

谢谢您的再次回答
select 1 as ID from dual union all select 2 as ID from dual是按固定写法取1和2,外边一个嵌套,后边order by随机数?
最后外边取出其中的一个,我写的是取10个数,如果我要从1-10000中取的话,你这个太不通用了
程序设计的首要就是要让程序再改动的时候能通用,我看您是微软的专家,这个应该理解吧?

--------------再次谢谢你---------------
你理解能力有问题,谢谢
看了我的sql你难道还不知道我要的是一次取N个随机数,并且不重复吗,你那么取顶多取一个,而且还不通用

嚣张的前提,是您对oracle根本不懂,我只想要个正确答案,但您给不出,所以你可以不用继续回答了
最新回答
故事与谁

2025-02-25 01:52:05

其实这个问题是这样的,你首先应该用一个array 记录 所有你要 取的数。
比如是一个 1-100的数组,

然后你就用随机数 取一个 数组的 位置,比如你 取到了 10,
你就从 这个array 中 ,删除这个数,
然后取随机数的范围缩小一个,因为数组已经是1-99的数组了。
就这样,一直取到最后一个数字
我这个你不爱的人

2025-02-25 04:46:25

可以这样,比如建个有1-10的表
create table test select rownum from all_objects where rownum<=10

然后
比如取四条的话
select * from (select * from test order by dbms_random.value) where rownum<=4
未来不动情

2025-02-25 00:01:22

--------------再次谢谢你---------------
你理解能力有问题,谢谢
看了我的sql你难道还不知道我要的是一次取N个随机数,并且不重复吗,你那么取顶多取一个,而且还不通用
-------------------------
对于楼主的态度,好像提问人比回复人还嚣张。

本人拒绝回复态度不好的提问者的问题,删除之前回复内容

自己好好思考一下,看一下dbms_random.value()+rownum用法。
------------------------------
好心提示一下:

你那么取顶多取一个?

认真一点已经有答案了刚才回复有提到rownum<=10
--------------