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

SQLのROW_NUMBER–SQLおよびSQLServerの上位の例を選択

    SQL(構造化クエリ言語)を使用すると、クエリを通じてデータベースからデータを収集できます。また、そのデータを挿入、更新、および削除することもできます。

    このブログ投稿では、SQLを使用してデータをフェッチし、結果を制限する方法に焦点を当てます。

    SQLクエリの結果を制限する必要があるのはなぜですか?

    データベースは通常、膨大なデータのコレクションです。すべての結果を取得する必要がない場合もあります。結果を制限するために、クエリを最適化できます。

    クエリ結果を制限することは、DBのパフォーマンスにとって重要です。必要のないときに大きな結果をフェッチすると、データベースに余分な負荷がかかり、ユーザーエクスペリエンスに影響を与えます。

    SQLでクエリ結果を制限する方法

    SQL Server、Oracle、およびMySQLでは、データを制限するための構文が異なります。

    • MySQLはLIMITを使用します 。
    • ORACLEはFETCH FIRSTを使用します 。
    • MSAccessとSQLServerはTOPを使用します 。

    それぞれがどのように機能するかの例を以下に詳しく示します。

    デモデータベース

    studentsという名前の次のテーブルがあります 以下に示すように、詳細を示します:

    ID 名前 性別
    1 ライアン M
    2 ジョアンナ F
    3 ミランダアンデルセン F
    4 ダリアマタ F
    5 リリアンナボイド F
    6 レキシーシャープ M
    7 ジャズリーンコルドバ F
    8 Brycen Werner M
    9 カリッサターナー F
    10 アイシャドドソン F
    11 アイディンリーブス M

    MySQLでクエリを制限する方法

    以下はMySQLの構文です。

    SELECT  (expression)
    FROM 
        table_name
    LIMIT 5;
    

    例として、テーブルから最初の5つのレコードを選択します。

    テーブルstudentsを使用してみましょう このデモンストレーションのために。

    -- fetch top 5 values from table
    
    SELECT * FROM students
    LIMIT 5;

    出力:

    LIMITとORDERBYを組み合わせる方法

    LIMITとORDERBYを組み合わせると、より意味のある結果を得ることができます。たとえば、これを使用して、試験で70%を超えるスコアを獲得した上位5人の学生を見つけることができます。

    テーブルのstudentsを注文しましょう 列name 結果から上位5つを選択します。あなたはこのようにそれをすることができます:

    SELECT * FROM students
    order by name
    LIMIT 5;

    出力:

    結果を制限する方法–Oracle構文

    以下は、Oracleの最初の例と同等の構文です。

    SELECT * FROM students
    FETCH FIRST 5 ROWS ONLY;

    古いバージョンのOracleでは、ROWNUMを使用して、クエリによって返される行数を制限できます。

    例:

    SELECT * FROM 
    students 
    WHERE ROWNUM < 5;

    SQLで結果を制限する方法–MSAccess構文

    以下は、MSAccessの最初の例と同等の構文です。

    SELECT TOP 5 * FROM students;
    
    まとめ

    LIMIT機能は、並べ替えと組み合わせると、クエリの最適化に非常に強力です。効率的なクエリは、システム上で軽量であり、ユーザーにとって迅速です。該当する場合は、結果を制限することを常にお勧めします。



    1. エンティティ開発者とADO.NetデータプロバイダーがEntityFrameworkCore5をサポートするようになりました

    2. PostgreSQLUNIXドメインソケットとTCPソケット

    3. SQLデータベースを簡単に復元–ステップバイステップガイド

    4. UnixtimeをDatetimeSQLに変換する(Oracle)