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

MySQL結果セットの行を制限する方法

    問題:

    MySQLの結果セットの行数を制限したい。

    例:

    私たちのデータベースには、student id列にデータがあります 、first_namelast_name 、およびage

    id first_name last_name 年齢
    1 スティーブン ワトソン 25
    2 リサ アンダーソン 19
    3 アリス ミラー 19
    4 メアリー ブラウン 25
    5 ルーシー ワトソン 25
    6 マイケル ジャクソン 22

    生徒の氏名と年齢を選択しましょう。ただし、返される行は3行に制限してください。

    解決策:

    SELECT first_name, last_name, age
    FROM student
    LIMIT 3;
    

    クエリの結果は次のとおりです。

    id first_name last_name 年齢
    1 スティーブン ワトソン 25
    2 リサ アンダーソン 19
    3 アリス ミラー 19

    ディスカッション:

    LIMIT句は、結果セットの行数を制限します。これはSELECTステートメントで使用され、通常はステートメントの最後にあります。 (ORDER BYもLIMITの前にリストする必要があります。)

    必要な引数は、表示する行数だけです。この例では、LIMIT3は3行を含む結果セットを生成しました。 OFFSET引数で特に指定しない限り、この関数は常に最初の nを返します。 クエリ要件を満たす行。

    LIMITのオプションのOFFSET引数は、返される行の数を示す引数の前に配置されます。 LIMITによって返される最初の行の位置を示します(つまり、「0」は最初の行、1は2番目の行など)。オフセットと行数はコンマで区切られます。

    オフセットがゼロであるため、クエリは前のクエリと同じレコードを返します。 (ゼロはデフォルトのオフセット値です。)

    SELECT first_name, last_name, age
    FROM student
    LIMIT 0, 3;
    

    これらのクエリでは、結果の行は順序付けられていません。並べ替えられた結果セットから3つの行を選択する場合は、ORDER BY:

    を使用します。
    SELECT first_name, last_name, age
    FROM student
    ORDER BY age DESC, last_name, first_name
    LIMIT 1,3;
    

    ここでは、最初に年齢(降順)、姓、名の順に行を並べ替えています。オフセット値を使用して、返された2番目の行から開始し、結果を3行に制限します。

    first_name last_name 年齢
    ルーシー ワトソン 25
    スティーブン ワトソン 25
    マイケル ジャクソン 22

    このクエリは、最初に年齢列に従って行を降順で並べ替えます。次に、last_nameで並べ替えます およびfirst_name 昇順。表を見ると、最年長の生徒(スティーブン、ルーシー、メアリー)が25歳であることがわかります。ただし、メアリーは最初の行であり、オフセットが1であるため、省略されています(つまり、2番目の行から開始しています)。彼女の名はスティーブンの前に来るので、ルーシーが最初になりました。 (スティーブンとルーシーの姓は同じであるため、順序は名で決まります。)マイケルは22歳で、2番目に年長の学生であり、3行の最後が返されます。


    1. 挿入された正確な順序で行を返します

    2. Oracle Database Explorer:無料のトレーニングと認定

    3. Java-例外の最初の原因を見つける

    4. SQL Server(T-SQL)で電子メールを送信するときに許容される添付ファイルのサイズを増やす方法