【SQL】LIMIT句の使い方をサンプルコードで解説

  • 2024.06.14
       
【SQL】LIMIT句の使い方をサンプルコードで解説

SQLのLIMIT句は取得するデータの件数を制限するクエリです。データベースにたくさんのデータが格納されていて、データを抽出する際に全部のデータではなく、抽出するデータ数を制限する場合はLIMIT句を用います。本記事では、SQLのSELECT区でデータを抽出する際に、データを抽出する件数を指定する「LIMIT句」と抽出開始位置を指定する「OFFSET句」について解説します。

LIMIT句とは

SQLのLIMIT句はあるクエリによって返される行数を制限するクエリです。たとえば、データを抽出する「SELECT句」とLIMIT句を併用することでデータベースから抽出するデータの件数を制限できます。

【サンプルテーブル】

「LIMIT」句の具体的な使い方を解説していくにあたって、サンプルとして「テスト(test)」テーブルを用意しました。

「テスト(test)」テーブル

ID(id)氏名(name)性別(gender)点数(point)
1001秋山80
1002久保田100
1003佐々木65
1004佐藤75
1005鈴木60
1006田中90
1007土屋55

LIMIT句の基本構文

【基本構文】

SELECT カラム名 FROM テーブル名 LIMIT 抽出する行数

たとえば、1000件のデータが格納されていて、そのうち100件を抽出する場合には「LIMIT 100」と書きます。

また、パラメータに抽出開始位置を指定することもでき、先頭からではなく指定した位置からデータを抽出できます。

SELECT カラム名 FROM テーブル名 LIMIT 抽出開始位置,抽出する行数

OFFSET句との併用

LIMIT句に抽出を開始する位置を指定する「OFFSET句」を併用することもあります。OFFSET句は、特定の開始位置(オフセット)からレコードを抽出するのに用いられるクエリで、主にページングやデータの部分的な抽出などの用途に使用されます。開始位置の数字に注意する必要があります。デフォルトは0で、たとえば、3行目から取得する場合は、2を指定します。

SELECT カラム名 FROM テーブル名 LIMIT 抽出する行数 OFFSET 抽出開始位置

たとえば、1000件のデータが格納されていて、「LIMIT 100 OFFSET 200」と書くと、そのうち201件目から100件を抽出できます。

ORDER BY句との併用

何も指定しないとSELECT文で抽出する結果の順序は何も保証されません。そこで、ORDER BY句で並び順を指定することで抽出する並び順を指定することができます。LIMIT句はORDER BY句と組み合わせて使用する場合がほとんどです。

たとえば、ID昇順で201~300件のデータを取得する場合は次のように書きます。

SELECT カラム名 FROM テーブル名 ORDER BY 並び替えるカラム名 DESC LIMIT 100 OFFSET 200

【SQL入門】ORDER BY句の使い方、複数条件の並び替えについて解説

サンプルテーブルを用いて、点数が高い順に3位から3人を抽出します。

【実行コード】

SELECT name,point FROM test ORDER BY point DESC LIMIT 3 OFFSET 2

【実行結果】

氏名(name)点数(point)
秋山80
佐藤75
佐々木65

今回の場合、OFFSETは「3」ではなく「2」です。間違えやすいので注意しましょう。

WHERE句との併用

条件文を付け加えてみます。

サンプルテーブルを用いて、女子生徒のうち点数が低い順に2位から2人を抽出します。

【実行コード】

SELECT * FROM test where gender='女' ORDER BY point LIMIT 2 OFFSET 1

【実行結果】

ID(id)氏名(name)性別(gender)点数(point)
1005鈴木60
1003佐々木65
【SQL入門1】WHEREで検索条件を指定する方法を解説

補足

LIMIT句とOFFSET句に関しては、SELECT文のほかにもDELETE文やUPDATE文にも利用できます。

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

LIMIT句の注意点

LIMIT句/OFFSET句は便利な機能ですが、標準SQLではないので、すべてのRDBMSで利用できるわけではありません。すべてのデータベースで互換性があるわけではないという点に注意が必要です。PostgreSQLやMySQLでは使用できますが、それ以外の主要なデータベースではサポートされておらず、使用できません。たとえば、Microsoft SQL ServerではLIMIT句ではなくTOP修飾子やOFFSET/FETCH NEXT句を使用します。また、Oracleでは、ROWNUM擬似列やFETCH FIRST句を使います。このように、データベースシステムによって、LIMIT句と同様の機能を持つクエリが異なるので、使用するシステムによって適切なクエリを記述する必要があります。

SQL関連記事

SQLの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、SQLに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事