2011-10-13 70 views
13

Tôi đã tìm thấy giải pháp này để chọn một hàng ngẫu nhiên từ một bảng trong Oracle. Thực sự sắp xếp các hàng theo cách ngẫu nhiên, nhưng bạn chỉ có thể tìm nạp hàng đầu tiên cho một kết quả ngẫu nhiên.Hàng ngẫu nhiên của Oracle từ bảng

SELECT * 
FROM table 
ORDER BY dbms_random.value; 

Tôi không hiểu cách hoạt động. Sau khi ORDER BY nó phải là một cột được sử dụng để phân loại. Tôi thấy rằng "dbms_random.value" trả về một giá trị nhỏ hơn 0. Hành vi này có thể được giải thích hoặc chỉ là như vậy?

Cảm ơn

Trả lời

23

bạn cũng có thể nghĩ về nó như thế này:

SELECT col1, col2, dbms_random.value 
FROM table 
ORDER BY 3 

Trong ví dụ này, số 3 = cột thứ ba

+0

giải pháp genious –

7

Khi bạn đặt hàng bằng cách dbms_random.value, Oracle đơn đặt hàng bởi sự biểu hiện, chứ không phải cho một column.For mọi kỷ lục Oracle tính toán một số ngẫu nhiên, và sau đó theo thứ tự theo số này.

Trong một cách tương tự, là như thế này:

select * from emp order by upper(ename); 

Bạn có một trật tự bằng cách dựa trên một hàm.

Các vấn đề liên quan