MySQLのSELECTで最初のN件のレコードをスキップする方法(OFFSETの使い方)
MySQLのSELECT文で先頭のレコードをスキップしたい場合は、OFFSETを使用します。OFFSETを指定すると、クエリ結果の最初の指定件数を飛ばして、それ以降のレコードだけを取得できます。
この記事では、実際にテーブルを作成しながら、OFFSETの基本的な使い方を解説します。
1. サンプルテーブルの作成
まず、テーブルを作成します。
mysql> create table DemoTable
(
Name varchar(40)
);
Query OK, 0 rows affected (0.63 sec)「Name」というカラムを1つだけ持つシンプルなテーブル「DemoTable」が作成されました。
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにデータを登録します。
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.11 sec)合計5件のレコード(Chris、Robert、Mike、Bob、David)を挿入しました。
3. 登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+--------+ | Name | +--------+ | Chris | | Robert | | Mike | | Bob | | David | +--------+ 5 rows in set (0.00 sec)
5件のレコードが登録されていることが確認できます。
4. OFFSETを使って先頭のN件をスキップする
ここからが本題です。先頭のレコードをスキップするには、LIMIT句とOFFSET句を組み合わせて使用します。
以下のクエリでは、最初の3件をスキップして、4件目以降のレコードを取得しています。
mysql> select *from DemoTable LIMIT 100 offset 3;
実行結果は以下の通りです。
+-------+ | Name | +-------+ | Bob | | David | +-------+ 2 rows in set (0.00 sec)
OFFSETの動作のポイント
- OFFSET 3 と指定すると、結果セットの先頭から3件(Chris、Robert、Mike)がスキップされます。
- LIMIT 100 は取得する最大件数を指定しています。ここでは余裕を持って100件としましたが、実際に存在するのは2件なので、残りの「Bob」と「David」だけが返されます。
- OFFSETの値は0から始まります。つまり「OFFSET 0」は先頭のレコードから取得することを意味します。
まとめ
MySQLでSELECT結果の先頭N件をスキップしたい場合は、LIMIT 取得件数 OFFSET スキップ件数の形式で記述します。ページネーション(ページ送り)機能の実装など、大量データを分割して表示したい場面で非常に役立つテクニックなので、ぜひ覚えておきましょう。
-
MySQLでSELECTとSHOWコマンドの結果を1つに結合する方法
はじめにMySQLでは、SELECT文やSHOWコマンドの実行結果を、ユーザー定義変数(セッション変数)を活用することで1つの結果セットにまとめることができます。この記事では、その具体的な方法をサンプルコード付きで解説します。基本的な構文複数のコマンド結果を1つに結合するには、以下のようなクエリを使用します。各変数に別名(エイリアス)を付けて出力するのがポイントです。select @任意の変数名1 as 別名1, @任意の変数名2 as 別名2, ......N;手順1:最初の変数を作成・初期化するまず、結合したい値を格納するための最初の変数を作成し、初期化します。mysql> set
-
MySQLで最高額の給与を取得する方法
```html MySQLで最高額の給与を取得するには? テーブルの中から最も高い給与(最高額の給料)を取得したい場合は、集計関数の MAX() を使用します。MAX() 関数は、指定したカラムの中で最大の値を返してくれる便利な関数です。 基本構文 select MAX(yourColumnName) AS anyAliasName from yourTableName; サンプルテーブルの作成 まず、実際に動作を確認するためのテーブルを作成しましょう。 mysql> create table demo44 -> ( -> employee_id int not null