Cả dcw và Dems đều đã cung cấp các truy vấn thay thế thích hợp. Tôi chỉ muốn đưa ra lời giải thích tại sao truy vấn của bạn không hoạt động như bạn mong đợi.
Nếu bạn có một truy vấn bao gồm ROWNUM và ORDER BY, Oracle áp dụng ROWNUM trước rồi đến ORDER BY. Vì vậy, truy vấn
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
lấy 5 hàng tùy ý từ EMP
bảng và sắp xếp chúng-- gần như chắc chắn không phải như dự định. Nếu bạn muốn lấy "N hàng đầu tiên" bằng ROWNUM, bạn cần phải lồng truy vấn. Truy vấn này
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
sắp xếp các hàng trong bảng EMP và trả về 5 đầu tiên.