PostgreSQLやMySQLなどを使用してDBを構築したシステムの場合、クエリの演算結果を部分的に取得したい時はOFFSETやLIMITのキーワードを使用してクエリを発行するが、OracleにはこのOFFSETやLIMITは存在しない。
同様の処理を行いたい場合は、ROWNUM擬似列を使用する。
「問合せによって戻される各行について、表や結合処理された行の集合からOracle が行を選択する順序を示す番号を戻します(Oracle9i SQLリファレンス)」
テーブル「USERS」のデータを1行目から10行目までを取得する
SELECT ID,NAME FROM USERS WHERE ROWNUM>=1 AND ROWNUM<=10;
仮想表を使用して、ソート済みデータを作成。その仮想表に対してROWNUMを使う。
SELECT ID, NAME FROM (SELECT ID, NAME FROM USERS ORDER BY ID) WHERE ROWNUM>=1 AND ROWNUM<=10
PostgreSQLとMySQLの場合、OFFSETとLIMITを使用する際は、ORDER BYでソートする事で順序が保障される。
またOracleと異なり、仮想表を作ったりする事も無くてよい。