【SQL超入門講座】24.LIMIT|必要なレコード数だけ表示する方法

こんにちは、キノコードです。
データ抽出で中身のわからないテーブルを扱うとき、まずどのようなカラムやレコードが含まれているか確認したくなると思います。
こんなとき皆さんはどのように確認を行っていますか?

たとえば膨大なレコードからなる、中身のわからないテーブルがあったとします。
「SELECT * FROM テーブル」としてしまうと、全件を抽出対象としているため、抽出にとても時間がかかってしまいます。
こんな時に便利なのが、今回のレッスンで解説するLIMIT関数です。
LIMIT関数はSQLを実行したとき、その返ってくる結果データを「何レコードまで」と上限設定できる関数です。
先程のSQLの末尾に「LIMIT 5」とつけて、「SELECT * FROM テーブル LIMIT 5」とすると、テーブルから5件だけ抽出されるようになります。
もちろん5件だけなので、全件抽出するより処理が軽くてすみます。
テーブルの中身を確認するときなどによく使いますので、今回のレッスンで是非使い方を覚えてくださいね。  

なおキノコードでは、この動画の他にもたくさんのプログラミングの動画を発信しています。
チャンネル登録がまだの方は、チャンネルがどこに行ったか分からなくならないように、是非チャンネル登録をお願いします。
それではレッスンスタートです。

LIMITについて

LIMIT関数は、SQLを実行する時に取得するデータの最大数を設定できる関数です。
LIMIT関数の基本書式はこのようになります。

SELECT [カラム名],・・・
FROM [テーブル]
LIMIT 設定レコード数

LIMIT関数は、実行するSQLの一番最後につけます。

仮にSQLを実行して返ってくる結果が、LIMIT関数で設定したレコード数より少ない場合、全データが抽出されます。
特にエラーになったりすることはありませんので、安心してご利用いただければと思います。

また、LIMIT関数はOFFSET関数と組み合わせる事ができます。
OFFSET関数はデータを取得する開始位置を指定することができる関数です。
このように書くことで、取得するデータの数と開始位置を指定してデータを取得することができます。

SELECT [カラム名],・・・
FROM [テーブル]
LIMIT 設定レコード数 OFFSET 取得開始行 -1

OFFSET関数では取得開始したい行数から、マイナス1した数を指定します。
例えば、11行目から指定のレコード数を抽出したいときは、「10」と書きます。
ここは取得開始の数字がそのまま入りませんので、注意が必要です。

それでは実際にテーブルを用いて、使い方を確認していきましょう。
今回使用するテーブルはこちらのtest_tableです。
test_tableはどの社員がいつ、何を売り上げたか記録されているテーブルです。

Extract

まずtest_tableから、「売上日」が古いものから100レコードを抽出してみましょう。
SQLはこのように書くことができます。

SELECT *
FROM test_table
ORDER BY 売上日
LIMIT 100

OREDR BYで売上日を昇順にします。
カラム名の後に何も指定しなければ、昇順で並び替えられます。
そしてSQLの最後にLIMIT関数でレコード数を100と指定します。

これで正しく記述できました。
それではSQLを実行します。

「売上日」が古いものから100レコード、正しく抽出されました。

では次に「売上金額の合計」が高い商品順の4番目から5レコードのデータを抽出してみましょう。
SQLは次のように書くことができます。

SELECT 商品名,
 SUM(売上金額) 売上合計
FROM test_table
GROUP BY 商品名
ORDER BY 売上合計 desc
LIMIT 5 OFFSET 3

売上金額を商品ごとにグループにして集計し、売上合計と名付けます。
そしてこの売上合計を高い順に並び替えるので、order byでカラム指定した後ろに、「desc」とつけます。
これで降順に並び替えができます。

そしてSQLの最後にLIMIT関数とOFFSET関数で取得するレコード数と、開始位置を指定します。
まずLIMIT関数で取得するレコード数を5と指定します。
続いてOFFSET関数で合計が高い順の4番目を開始位置としたいので、4番目のマイナス1で「3」と書きます。

それではSQLを実行します。

「売上金額の合計」が高い商品順の、4番目から5レコードで、4件が抽出されました。
抽出結果が5件以上なかった、ということですね。

以上が、基本的なLIMIT関数の使い方となります。

ED

さて、LIMITの説明と使用例をご紹介しましたが、いかがでしたでしょうか?
キノコードでは、これからもさまざまなプログラミングやITに関する動画を出していきます。
気に入っていただけましたら、ぜひチャンネル登録をお願いします!
それではまた次のレッスンでお会いしましょう。