Baik dcw dan Dems telah menyediakan pertanyaan alternatif yang sesuai. Saya hanya ingin memberikan penjelasan mengapa kueri Anda tidak berperilaku seperti yang Anda harapkan.
Jika Anda memiliki kueri yang menyertakan ROWNUM dan ORDER BY, Oracle menerapkan ROWNUM terlebih dahulu, lalu ORDER BY. Jadi pertanyaannya
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
mendapat 5 baris sewenang-wenang dari EMP
meja dan mengurutkannya-- hampir pasti bukan yang dimaksudkan. Jika Anda ingin mendapatkan baris "N pertama" menggunakan ROWNUM, Anda perlu menyarangkan kueri. Kueri ini
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
mengurutkan baris dalam tabel EMP dan mengembalikan 5 baris pertama.