我试图从 Oracle SQL 中特定行的字段 tid 返回一个值,但我得到了一个奇怪的行为。
首先,我尝试了这个:
select tid from
(select tid, rownum as rn from
(select tid from Train))
where rn=5;
成功返回第5行的值。但是,当我尝试通过执行以下操作随机化该值以将 rownum 的行从 1 更改为 15 时:
select tid from
(select tid, rownum as rn from
(select tid from Train))
where rn=round(dbms_random.value(1,15));
返回更多行,而不仅仅是一行。我究竟做错了什么?
那是因为dbms_random()
为每一行调用,因此它可以生成重复的结果。相反,如果您想要一个随机行,请尝试如下操作:
select tid
from (select tid,
row_number() over (order by dbms_random.value()) as seqnum
from Train
) t
where seqnum = 1;
这将始终返回“seqnum = 1”的行,但它将是随机的tid
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)