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

Oracleで結果を制限する方法

    問題:

    Oracleでのクエリの結果の行数を制限したい。

    例:

    exam 表には、試験の結果が記載された生徒の名前があります。

    name Exam_result
    Janet Morgen 9
    タヤベイン 11
    アンジョンソン 11
    Josh Kaur 10
    エレンソーントン 8

    最高の試験結果が得られる3行を取得したい。

    ソリューション1:

    SELECT *
    FROM (
      SELECT *
      FROM exam
      ORDER BY exam_result DESC
    )
    WHERE ROWNUM <= 3;
    

    クエリの結果は次のようになります:

    name Exam_result
    Taya Bain 11
    アンジョンソン 11
    Josh Kaur 10

    ディスカッション:

    FROM内 句、exam_resultで行を並べ替えるサブクエリを使用します 降順の列。

    SELECT *
    FROM exam
    ORDER BY exam_result DESC
    

    メインクエリで、行数が3以下であるという条件を記述します。 。これを行うには、ROWNUM(行番号)を使用します。最初の3行のみが表示されるようにするには、行番号が3以下であるという条件が必要です。 。

    WHERE ROWNUM <= 3
    

    行を並べ替えるためだけにサブクエリが必要です。最良の3行ではなくランダムに3行が必要な場合は、サブクエリの代わりにテーブル名を入力するだけです。

    SELECT *
    FROM exam
    WHERE ROWNUM <= 3;
    

    気を付けて!これは、ある値よりも大きい数の行を探している場合は機能しません(たとえば、ROWNUM > 2 行は返されません。)


    1. 拡張イベントでの述語注文の問題

    2. MySQLは自動的に文字列を数値にキャスト/変換しますか?

    3. 事前入力されたデータベースでRoomPersistenceLibraryを使用するにはどうすればよいですか?

    4. SERVERPROPERTY()を使用して、SQLServerのサーバー情報を取得します