One method using dbms random value Code: [Copy to Clipboard] SQL> Select * from (Select * from t order by dbms_random.value) Where rownum <10; A ---------- 39 101 134 5 83 97 96 140 81 9 lines have been selected. SQL> Select * from (select * from t order by dbms_random.value) WHERE ROWNUM <10; A ---------- 27 118 141 103 128 10 142 68 74 Some people say this is the most efficient , Please tell a better solution!