rownumは、where句が適用された後の結果セットの行をカウントする疑似列です。
SELECT table_name
FROM user_tables
WHERE rownum > 2;
TABLE_NAME
------------------------------
0 rows selected
ただし、このクエリは、テーブルの行数に関係なく、常にゼロ行を返します。
この動作を説明するには、OracleがROWNUMを処理する方法を理解する必要があります。 ROWNUMを行に割り当てる場合、Oracleは1から開始し、行が選択された場合にのみ値をインクリメントします。つまり、WHERE句のすべての条件が満たされたときです。条件ではROWNUMが2より大きい必要があるため、行は選択されず、ROWNUMが1を超えてインクリメントされることはありません。
http://blog.lishman.com/2008/03/rownum.html
編集済み
この段落は、oracle にあります。 はるかに優れたウェブサイト
正の整数より大きいROWNUM値をテストする条件は、常にfalseです。たとえば、このクエリは行を返しません:
SELECT * FROM employees
WHERE ROWNUM > 1;
フェッチされた最初の行には1のROWNUMが割り当てられ、条件がfalseになります。フェッチされる2番目の行が最初の行になり、ROWNUM 1も割り当てられ、条件がfalseになります。その後、すべての行が条件を満たさなくなるため、行は返されません。
次の例のように、ROWNUMを使用して、テーブルの各行に一意の値を割り当てることもできます。