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

OracleDBのテーブルから2番目に高い値

    ウィンドウ関数を使用します:

    select *
    from (
      select u.*, dense_rank() over (order by balance desc) as rnk
      from users u
    ) t
    where rnk = 2;
    

    クエリのパフォーマンスに大きな違いはないと思います(特にbalanceのインデックスを使用しない場合) )しかし、私の意見では、読みやすく、保守しやすいと思います。



    1. liquibaseを使用したOracleではロールバックが機能していません

    2. 列の値が変更されたときのMysqlselect行

    3. SQL開発者によるインデックス外の文字列

    4. Asp.netMVCアプリのWindows認証を介したApplication_AuthenticateRequestでContext.UserがNULL