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を組み合わせることで、先頭の行を自由に読み飛ばせるため、一覧画面のページネーション(ページ送り)機能の実装などにも広く活用されています。
-
MySQLでアポストロフィ(')をエスケープする2つの方法
MySQLでは、文字列に含まれるアポストロフィ(シングルクォート )をエスケープする必要がある場面がよくあります。例えば「Johns」のような名前をそのまま挿入しようとすると、構文エラーになってしまいます。 アポストロフィをエスケープするには、主に以下の2つの方法があります。 バックスラッシュ(\)を使用する シングルクォートを2つ重ねる() 準備:テーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table SingleQuotesDemo -> ( -> id int, -> name varchar
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected