MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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 スキップ件数の形式で記述します。ページネーション(ページ送り)機能の実装など、大量データを分割して表示したい場面で非常に役立つテクニックなので、ぜひ覚えておきましょう。

  1. MySQLでSELECTとSHOWコマンドの結果を1つに結合する方法

    はじめにMySQLでは、SELECT文やSHOWコマンドの実行結果を、ユーザー定義変数(セッション変数)を活用することで1つの結果セットにまとめることができます。この記事では、その具体的な方法をサンプルコード付きで解説します。基本的な構文複数のコマンド結果を1つに結合するには、以下のようなクエリを使用します。各変数に別名(エイリアス)を付けて出力するのがポイントです。select @任意の変数名1 as 別名1, @任意の変数名2 as 別名2, ......N;手順1:最初の変数を作成・初期化するまず、結合したい値を格納するための最初の変数を作成し、初期化します。mysql> set

  2. MySQLで最高額の給与を取得する方法

    ```html MySQLで最高額の給与を取得するには? テーブルの中から最も高い給与(最高額の給料)を取得したい場合は、集計関数の MAX() を使用します。MAX() 関数は、指定したカラムの中で最大の値を返してくれる便利な関数です。 基本構文 select MAX(yourColumnName) AS anyAliasName from yourTableName; サンプルテーブルの作成 まず、実際に動作を確認するためのテーブルを作成しましょう。 mysql> create table demo44 -> ( -> employee_id int not null