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

Oracleでrownumを使用してデータをフェッチする

    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

    別のstackoverflowリンク

    編集済み

    この段落は、oracle にあります。 はるかに優れたウェブサイト

    正の整数より大きいROWNUM値をテストする条件は、常にfalseです。たとえば、このクエリは行を返しません:

    SELECT * FROM employees
        WHERE ROWNUM > 1;
    

    フェッチされた最初の行には1のROWNUMが割り当てられ、条件がfalseになります。フェッチされる2番目の行が最初の行になり、ROWNUM 1も割り当てられ、条件がfalseになります。その後、すべての行が条件を満たさなくなるため、行は返されません。

    次の例のように、ROWNUMを使用して、テーブルの各行に一意の値を割り当てることもできます。



    1. サーバーでサーバーストレージ情報を取得するためのストアドプロシージャ

    2. Accessでパラメータクエリを作成する方法

    3. PHP MySQLインジェクションの例をテストするにはどうすればよいですか?

    4. 複数の列に対して相関サブクエリを使用する