Das liegt daran, dass dbms_random()
wird für jede Zeile aufgerufen, sodass doppelte Ergebnisse generiert werden können. Wenn Sie stattdessen eine zufällige Zeile wünschen, versuchen Sie Folgendes:
select tid
from (select tid,
row_number() over (order by dbms_random.value()) as seqnum
from Train
) t
where seqnum = 1;
Dies wird immer die Zeile mit "seqnum =1" zurückgeben, aber es wird eine zufällige tid
sein .