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

Oracle SQL:ROWNUMによるフィルタリングで、必要なときに結果が返されない

    rownumは使用できません このような。 rownum 値が実際にクエリから返されるときに計算されます-行が返されるときのみ。したがって、ステートメント:

    where rownum = 2
    

    「2」の前に「1」が必要なため、値を返すことはありません。

    Oracle 12以降を使用している場合は、offsetを使用できます。 fetch first <n> rows onlyする句 。以前のバージョンでは、row_number() over ()を使用できます 行番号を列として計算し、それをwhereで使用します 。

    実際、クエリはすでにサブクエリを使用しているため、次のようなことができます。

    select *
    from (select . . .,
                 row_number() over (order by Request_ID, Actual_Start_Date) as rn
          . . .
         ) t
    WHERE rn < (1000000 * to_Number(:X) and)
          rn >= (1000000 * (to_Number(:X)-1))
    


    1. PL/SQLで日付範囲を反復処理する方法

    2. MariaDBでのLTRIM()のしくみ

    3. psycopg2-キーなし接続

    4. MySQLはHavingでインデックスを使用しますか?