To dlatego, że dbms_random()
jest wywoływana dla każdego wiersza, dzięki czemu może generować zduplikowane wyniki. Zamiast tego, jeśli chcesz mieć jeden losowy wiersz, wypróbuj coś takiego:
select tid
from (select tid,
row_number() over (order by dbms_random.value()) as seqnum
from Train
) t
where seqnum = 1;
To zawsze zwróci wiersz z "seqnum =1", ale będzie to losowy tid
.