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

Oracle / SQL:クエリSELECT*FROMレコードWHERErownum>=5 AND rownum<=10-ゼロ行を返すのはなぜですか

    Oracleでは、Rownum値はクエリのフィルタリング段階の後に割り当てられます。これらはテーブルの行ではなく、クエリ結果セットの行です。

    したがって、最初に戻ってくる行には常にrownum 1が与えられ、2番目に戻ってくる行にはrownum2などが与えられます。

    rownum値は割り当てられた後にのみインクリメントされるため、

    select * from t where ROWNUM > 1
    

    決して 結果を返します。このクエリは、「最初の行が返されるのを見たくない、その後の行だけを見たい」と言っています。これは一種のパラドックスであるため、何も返されません。

    詳細については、Ask Tom:OnROWNUMおよびLimitingResultsを参照してください。



    1. NULLの複雑さ–パート4、標準の一意性制約がありません

    2. WHERE句でのエイリアスの使用

    3. SQLでコメントを追加する方法は?

    4. HubSpotODBCドライバー