【MySQL】1つのクエリで最初の10行を取得し、その後に残りの行レコードを表示する構文
はじめに
本記事では、MySQLにおいて最初の10行を先に表示し、続けて残りの行レコードを表示するためのクエリの書き方を、実際の実行例とともにわかりやすく解説します。ポイントはLIMIT句とOFFSET句の組み合わせです。
サンプルテーブルの作成
まず、テーブルを作成します。
mysql> create table DemoTable ( Id int ); Query OK, 0 rows affected (0.71 sec)
レコードの挿入
次に、insert文を使ってテーブルに複数のレコードを挿入します。
mysql> insert into DemoTable values(100); Query OK, 1 row affected (0.31 sec) mysql> insert into DemoTable values(101); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable values(102); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(103); Query OK, 1 row affected (0.64 sec) mysql> insert into DemoTable values(104); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(105); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable values(106); Query OK, 1 row affected (0.25 sec) mysql> insert into DemoTable values(107); Query OK, 1 row affected (0.44 sec) mysql> insert into DemoTable values(108); Query OK, 1 row affected (0.62 sec) mysql> insert into DemoTable values(109); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(110); Query OK, 1 row affected (0.31 sec) mysql> insert into DemoTable values(111); Query OK, 1 row affected (0.94 sec) mysql> insert into DemoTable values(112); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable values(113); Query OK, 1 row affected (0.35 sec) mysql> insert into DemoTable values(114); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(115); Query OK, 1 row affected (0.25 sec)
テーブル内の全レコードを確認する
selectステートメントを実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
上記のクエリを実行すると、次のような出力が得られます。
+------+ | Id | +------+ | 100 | | 101 | | 102 | | 103 | | 104 | | 105 | | 106 | | 107 | | 108 | | 109 | | 110 | | 111 | | 112 | | 113 | | 114 | | 115 | +------+ 16 rows in set (0.00 sec)
全部で16件のレコードが登録されていることが確認できました。
最初の10行と残りの行を1つのクエリで取得する
最初の10行を先頭に、その後に残りの行レコードを続けて表示するには、以下のようにLIMIT句とOFFSET句を組み合わせたクエリを使用します。
mysql> select *from DemoTable LIMIT 999 offset 0;
実行結果は以下のとおりです。
+------+ | Id | +------+ | 100 | | 101 | | 102 | | 103 | | 104 | | 105 | | 106 | | 107 | | 108 | | 109 | | 110 | | 111 | | 112 | | 113 | | 114 | | 115 | +------+ 16 rows in set (0.00 sec)
LIMIT 999は「最大999行まで取得する」ことを意味し、OFFSET 0は「先頭行(0行スキップ)から取得を開始する」ことを意味します。LIMITの値をテーブルの総行数より大きく設定することで、最初の10行を含むすべての行を、1つのクエリで先頭から順に取得できるのです。
応用:取得範囲を細かく制御する
- 最初の10行だけを取得したい場合:
select *from DemoTable LIMIT 10; - 11行目以降(残りの行)だけを取得したい場合:
select *from DemoTable LIMIT 999 OFFSET 10;
このようにLIMIT句とOFFSET句を活用すれば、ページネーション処理などでも柔軟に行の取得範囲を制御できます。
-
【MySQL】日付レコードから曜日を減算し、曜日名とともに結果を表示する方法
はじめにMySQLで保存された日付レコードから、その週の開始日(月曜日)を計算して減算し、曜日名とともに結果を表示したい場合があります。このような処理には DATE_FORMAT() 関数を使用します。SUBDATE() と WEEKDAY() を組み合わせることで、各日付が属する週の月曜日の日付を「Mon 19 Oct」のような形式で取得できます。以下、具体的な手順をサンプルコードとともに解説します。1. テーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable1820 ( AdmissionDate
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),