C'est parce que dbms_random()
est appelé pour chaque ligne, il peut donc générer des résultats en double. Au lieu de cela, si vous voulez une ligne aléatoire, essayez quelque chose comme ceci :
select tid
from (select tid,
row_number() over (order by dbms_random.value()) as seqnum
from Train
) t
where seqnum = 1;
Cela renverra toujours la ligne avec "seqnum =1", mais ce sera un tid
aléatoire .