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

サブクエリの問題でのOracleSQLの順序付け!

    dcwとDemsの両方が、適切な代替クエリを提供しています。クエリが期待どおりに動作しない理由を説明したかっただけです。

    ROWNUMとORDERBYを含むクエリがある場合、Oracleは最初にROWNUMを適用し、次にORDERBYを適用します。したがって、クエリ

    SELECT *
      FROM emp
     WHERE rownum <= 5
     ORDER BY empno
    

    EMPから任意の5行を取得します テーブルとそれらを並べ替えます-ほぼ確実に意図されたものではありません。 ROWNUMを使用して「最初のN」行を取得する場合は、クエリをネストする必要があります。このクエリ

    SELECT *
      FROM (SELECT *
              FROM emp
             ORDER BY empno)
     WHERE rownum <= 5
    

    EMPテーブルの行をソートし、最初の5を返します。



    1. 特定のスキーマに対するユーザー特権を付与する方法は?

    2. SQLServerの緊急モードからデータベースを回復する

    3. ORA-00933:SQLコマンドが正しく終了していません

    4. SQLServerのカーソルタイプ-動的カーソルのみを転送| SQLServerチュートリアル/TSQLチュートリアル