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

MySQLで先頭の10件のレコードをスキップして取得する方法(LIMITとOFFSETの使い方)

MySQLでクエリ結果の最初の10件をスキップしたい場合は、「LIMIT句」と「OFFSET句」を組み合わせて使用します。OFFSETで読み飛ばす行数を指定し、LIMITで取得する行数を指定することで、ページネーションなどに活用できます。

基本構文

先頭の10件をスキップする基本的な構文は以下の通りです。

SELECT * FROM テーブル名 LIMIT 取得件数 OFFSET スキップ件数;

具体的には次のように記述します。

select *from yourTableName limit 10 offset lastValue;

サンプルテーブルを作成する

まずは動作を確認するために、テーブルを作成しましょう。以下のクエリで「SkipFirstTenRecords」というテーブルを作成します。

mysql> create table SkipFirstTenRecords
    -> (
        -> StudentId int,
        -> StudentName varchar(200)
       -> );
Query OK, 0 rows affected (0.53 sec)

テストデータを挿入する

続いて、INSERT文を使って15件のレコードを挿入します。

mysql> insert into SkipFirstTenRecords values(100,'John');
mysql> insert into SkipFirstTenRecords values(101,'Johnson');
mysql> insert into SkipFirstTenRecords values(102,'Carol');
mysql> insert into SkipFirstTenRecords values(103,'Smith');
mysql> insert into SkipFirstTenRecords values(104,'Bob');
mysql> insert into SkipFirstTenRecords values(105,'David');
mysql> insert into SkipFirstTenRecords values(106,'Sam');
mysql> insert into SkipFirstTenRecords values(107,'Taylor');
mysql> insert into SkipFirstTenRecords values(108,'Ramit');
mysql> insert into SkipFirstTenRecords values(109,'Belly');
mysql> insert into SkipFirstTenRecords values(110,'Aaron');
mysql> insert into SkipFirstTenRecords values(111,'Peter');
mysql> insert into SkipFirstTenRecords values(112,'Travis');
mysql> insert into SkipFirstTenRecords values(113,'Alex');
mysql> insert into SkipFirstTenRecords values(114,'Pat');

登録済みの全レコードを確認する

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

mysql> select *from SkipFirstTenRecords;

実行結果は以下の通りです。合計15件のレコードが登録されています。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       100 | John        |
|       101 | Johnson     |
|       102 | Carol       |
|       103 | Smith       |
|       104 | Bob         |
|       105 | David       |
|       106 | Sam         |
|       107 | Taylor      |
|       108 | Ramit       |
|       109 | Belly       |
|       110 | Aaron       |
|       111 | Peter       |
|       112 | Travis      |
|       113 | Alex        |
|       114 | Pat         |
+-----------+-------------+
15 rows in set (0.00 sec)

先頭の10件をスキップして取得する

ここからが本題です。上記のテーブルから最初の10件をスキップするには、次のようにクエリを実行します。

mysql> select *from SkipFirstTenRecords limit 10 offset 10;

このクエリでは、OFFSET 10によって先頭の10行を読み飛ばし、その後の最大10行を取得します。テーブルには全部で15件しか存在しないため、残りの5件のみが返されます。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       110 | Aaron       |
|       111 | Peter       |
|       112 | Travis      |
|       113 | Alex        |
|       114 | Pat         |
+-----------+-------------+
5 rows in set (0.00 sec)

まとめ

LIMIT句とOFFSET句を組み合わせることで、MySQLでは簡単に先頭の任意の件数をスキップした結果取得が可能です。「LIMIT 10 OFFSET 10」のように指定すれば、先頭10件を除外して以降のデータを取得できます。この手法は、検索結果のページング処理などでも広く使われているため、ぜひ覚えておきましょう。

  1. MySQLでクエリ結果をランダムに並べ替え、ランダムな行を選択する方法

    MySQLでクエリの結果をランダムに並べ替えたい場合は、ORDER BY RAND() を使用します。WHERE句で絞り込んだ結果に対してランダムな順序を適用し、LIMIT句と組み合わせることで、指定した件数の行をランダムに取得できます。基本構文select * from DemoTable1559 where yourColumnName IN(yourValue1,yourValue2,....N) order by rand() limit yourLimitValue;サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。mysql> create table Dem

  2. MySQLで複数テーブルの結果をマージする方法|JOINを使った結合手順を解説

    MySQLで2つ以上のテーブルに分かれたデータを1つの結果としてまとめたい場合、JOIN(結合)を使うのが最もシンプルで効果的な方法です。この記事では、実際にテーブルを作成しながら、JOINによる結果のマージ手順をわかりやすく解説します。マージに使用するJOINの基本構文結果をマージするには、以下のような構文でシンプルなJOINを使用します。SELECT aliasName1.yourColumnName1, aliasName1.yourColumnName2, ... aliasName2.yourColumnName1 FROM yourTableName1 aliasN