Using rownum *without* an order by will give you random results each time you run your query. To do a proper paging, you need to put this into a derived table together with an `order by` select * from ( select foo.* from foo order by some_column -- this is important!! ) t where rownum between 101 and 200; For more details please read the explanation on `rownum` works in the manual http://docs.oracle.com/cd/E11882_01/server.112/e41084/pseudocolumns009.htm#SQLRF00255 For a very good discussion on how to do paging efficiently in Oracle (and other DBMS) I can highly recommend this site: http://use-the-index-luke.com/sql/partial-results/fetch-next-page