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件を除外して以降のデータを取得できます。この手法は、検索結果のページング処理などでも広く使われているため、ぜひ覚えておきましょう。
-
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
-
MySQLで複数テーブルの結果をマージする方法|JOINを使った結合手順を解説
MySQLで2つ以上のテーブルに分かれたデータを1つの結果としてまとめたい場合、JOIN(結合)を使うのが最もシンプルで効果的な方法です。この記事では、実際にテーブルを作成しながら、JOINによる結果のマージ手順をわかりやすく解説します。マージに使用するJOINの基本構文結果をマージするには、以下のような構文でシンプルなJOINを使用します。SELECT aliasName1.yourColumnName1, aliasName1.yourColumnName2, ... aliasName2.yourColumnName1 FROM yourTableName1 aliasN