by shigemk2

当面は技術的なことしか書かない

rownum と order byの組み合わせ

上位n件の抽出をやりたいときに、

select * from TABLE where ROWNUM <= 5 order by NO

ってやると、rownumで抽出件数を限定したあとにorder byするのでこれだと「上位n件の抽出」は出来ない。

上位n件抽出をやりたいなら、

SELECT NO FROM (
    SELECT NO FROM ROWNUM_TEST
    ORDER BY NO
)
WHERE ROWNUM <= 5
ORDER BY NO ;

みたくサブクエリで最初にソートしてからrownumしたりorder byしたりする必要がある。

TOP n レコードの取得 - オラクル・Oracleをマスターするための基本と仕組み