我正在尝试从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()每行都会被调用,因此它可以生成重复的结果。相反,如果您想要一个随机行,请尝试如下操作:
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”的行,但它将是一个random tid。
tid