sql >> データベース >  >> RDS >> Oracle

rownumを使用してテーブルの2番目の行を選択する

    この動作を説明するには、OracleがROWNUMを処理する方法を理解する必要があります。 ROWNUMを行に割り当てる場合、Oracleは1から開始し、行が選択されたときにのみ値をインクリメントします。つまり、WHERE句のすべての条件が満たされた場合です。この条件ではROWNUMが2より大きい必要があるため、行は選択されず、ROWNUMが1を超えてインクリメントされることはありません。

    肝心なのは、次のような条件が期待どおりに機能するということです。

    .. WHERE rownum =1;

    .. WHERE rownum <=10;

    これらの条件のクエリは常にゼロ行を返します。

    .. WHERE rownum =2;

    .. WHERE rownum> 10;

    Oraclerownumの理解からの引用

    動作させるには、次のようにクエリを変更する必要があります。

    select empno
    from
        (
        select empno, rownum as rn 
        from (
              select empno
              from emp
              order by sal desc
              )
        )
    where rn=2;
    

    編集 :クエリを修正して、の行番号を取得しました saldescによる注文



    1. SQLiteクエリ結果をHTMLテーブルとしてフォーマットする

    2. MySQLテーブル名の特殊文字

    3. 外部キーは自動的にインデックスを作成しますか?

    4. oracleblobテキスト検索