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

MySQLで行をスキップする方法|LIMIT OFFSETの使い方を実例で解説

MySQLで特定の行をスキップしてデータを取得したい場合は、LIMIT OFFSET句を使用します。OFFSETに指定した数だけ先頭の行が読み飛ばされ、LIMITで指定した件数分の行が返されます。本記事では、テーブル作成から実際のクエリ実行まで、具体例とともに手順を解説します。

1. サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable860(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(100)
);
Query OK, 0 rows affected (0.73 sec)

2. テストデータの挿入

INSERT文を使って、いくつかのレコードを追加します。

mysql> insert into DemoTable860(Name) values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable860(Name) values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable860(Name) values('David');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable860(Name) values('Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable860(Name) values('Mike');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable860(Name) values('Sam');
Query OK, 1 row affected (0.07 sec)

3. 登録済みレコードの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select *from DemoTable860;

実行結果は以下の通りです。

+----+--------+
| Id | Name   |
+----+--------+
|  1 | Chris  | 
|  2 | Robert |
|  3 | David  |
|  4 | Bob    |
|  5 | Mike   |
|  6 | Sam    |
+----+--------+
6 rows in set (0.00 sec)

4. LIMIT OFFSETで行をスキップする

MySQLで行をスキップするクエリは以下の通りです。この例では、最初の2行を読み飛ばし(OFFSET 2)、3行目以降から3件を取得しています(LIMIT 3)。

mysql> select *from DemoTable860 limit 3 offset 2;

実行結果は以下の通りです。

+----+-------+
| Id | Name  |
+----+-------+
|  3 | David |
|  4 | Bob   |
|  5 | Mike  |
+----+-------+
3 rows in set (0.00 sec)

補足:カンマ区切りの書き方との違い

LIMIT 2, 3 のようにカンマ区切りで記述することも可能ですが、この場合最初の数値がオフセット(スキップ件数)、2番目が取得件数となります。OFFSETキーワードを使う書き方の方が意図が明確になり、誤りも防ぎやすいでしょう。

このようにLIMIT OFFSETを組み合わせることで、先頭の行を自由に読み飛ばせるため、一覧画面のページネーション(ページ送り)機能の実装などにも広く活用されています。

  1. MySQLでアポストロフィ(')をエスケープする2つの方法

    MySQLでは、文字列に含まれるアポストロフィ(シングルクォート )をエスケープする必要がある場面がよくあります。例えば「Johns」のような名前をそのまま挿入しようとすると、構文エラーになってしまいます。 アポストロフィをエスケープするには、主に以下の2つの方法があります。 バックスラッシュ(\)を使用する シングルクォートを2つ重ねる() 準備:テーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table SingleQuotesDemo -> ( -> id int, -> name varchar

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected