Đó là vì dbms_random()
được gọi cho mỗi hàng, vì vậy nó có thể tạo ra các kết quả trùng lặp. Thay vào đó, nếu bạn muốn một hàng ngẫu nhiên, hãy thử một cái gì đó như sau:
select tid
from (select tid,
row_number() over (order by dbms_random.value()) as seqnum
from Train
) t
where seqnum = 1;
Điều này sẽ luôn trả về hàng có "seqnum =1", nhưng nó sẽ là một tid
ngẫu nhiên .