MySQL 制限クエリは次の目的で使用されます。 制限 結果セットから返される行数ではなく、 取得中 MySQL データベース内のセット全体。 Limit 句は SELECT ステートメントと連携して、指定された行数のみを返します。このクエリは 1 つまたは 2 つの引数のみを受け入れ、その値は 0 または任意の正の整数である必要があります。
これは、テーブルに数千の行が含まれている場合、または最近挿入されたデータのみを返したい場合に不可欠です。つまり、クエリから返されるすべての行を取得する必要がない場合は、SELECT ステートメントで MySQL Limit 句を使用します。これにより、クエリのパフォーマンスが向上し、テーブルに大量のデータが含まれている場合にシステムがクラッシュすることもなくなりました。
テーブルから指定された行のみを取得するために、MySQL は リミット 句が使用されるのに対し、SQL では 上 句、Oracle は ロウナム を含む条項 選択する 声明。
構文
以下は、Limit クエリを使用する構文です。 MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
上記の構文では、次のことがわかります。
列リスト: 返したい列の名前です。
テーブル名: これは、列名を含むテーブルの名前です。
オフセット: 戻りたい行の番号を指定します。行のオフセットは 1 ではなく 0 から始まります。
カウント: 返す行の最大数を指定します。
次の視覚的表現は、それをより明確に説明しています。
注: Limit 句で引数を 1 つだけ指定した場合、MySQL はこれを想定して、結果セットから出力を返す最大行数を決定します。その場合、Limit 句の引数、オフセット、およびカウントは同等になります。
LIMIT 句と ORDER BY 句
ユーザーは、Order By 句とともに Limit 句を使用する必要があります。 Order By 句を使用しない場合、結果は次のようになります。 不特定の順序 。その場合、クエリがどの行から結果を返すかを知るのは困難です。したがって、これを使用するのは良い習慣です Group By 句 特定の順序で行を取得するための Limit 句を使用します。
次の構文を使用すると、結果を一意の順序で取得できます。
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
MySQL の制限の例
次のデータを含むサンプル テーブルをデータベースに作成し、さまざまな例を使用して MySQL で Limit 句がどのように機能するかを理解しましょう。
表: 従業員
1. MySQL で最大または最小の行を返す制限
次のステートメントは、上位 5 人の若手従業員を取得するために使用されます。
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
このステートメントは、まず Group By 句を使用して従業員の年齢を並べ替えてから、Limit 句によって上位 5 位の結果を返します。上記の手順を実行すると、次の出力が得られます。
2. オフセットを使用して行の範囲を取得するための MySQL の制限
場合によっては、値の範囲内の結果を取得したいことがあります。たとえば、アプリケーションでデータを表示するために多数の行があり、それをページに分割し、各ページにはテーブル内に最大 10 行が含まれるとします。その場合、次のクエリを使用して行の範囲を取得できます。
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
このステートメントは、行番号 3 から始まり最大 7 行目までの行を返します。また、従業員の収入を最高から最低の順に並べ替えます。クエリを実行すると、次の出力が得られます。
ABSCコード
3. WHERE 句による MySQL の制限
MySQL の制限は、WHERE 句でも使用できます。まず、テーブル内の指定された条件をチェックし、条件に一致する行を生成します。
このクエリは、年齢が 30 歳を超える最初の 5 人の従業員を選択します。ここでは、Order By 句も使用して、従業員を収入の降順で並べ替えています。
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
上記のステートメントが正常に実行されると、次の出力が得られます。
4. MySQL LIMIT で n 番目に大きい値または小さい値を取得します。
場合によっては、n 番目に大きい値または小さい値の行を取得したいことがあります。その場合、次の MySQL LIMIT 句を使用して期待どおりの結果を得ることができます。
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
この構文では、LIMIT n-1, 1 句は行 n から始まる 1 行を返します。
たとえば、次のクエリは、2 番目に収入の高い従業員の情報を返します。
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
上記のステートメントを実行すると、次のクエリが生成されます。
上記のクエリは、テーブルにある程度の収入のある従業員が 2 人含まれていない場合にのみ機能することに注意してください。その場合に使用させていただきます DENSE_RANK () より正確な結果を得るために。