dcwとDemsの両方が、適切な代替クエリを提供しています。クエリが期待どおりに動作しない理由を説明したかっただけです。
ROWNUMとORDERBYを含むクエリがある場合、Oracleは最初にROWNUMを適用し、次にORDERBYを適用します。したがって、クエリ
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
EMP
から任意の5行を取得します テーブルとそれらを並べ替えます-ほぼ確実に意図されたものではありません。 ROWNUMを使用して「最初のN」行を取得する場合は、クエリをネストする必要があります。このクエリ
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
EMPテーブルの行をソートし、最初の5を返します。