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

【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句を活用すれば、ページネーション処理などでも柔軟に行の取得範囲を制御できます。

  1. 【MySQL】日付レコードから曜日を減算し、曜日名とともに結果を表示する方法

    はじめにMySQLで保存された日付レコードから、その週の開始日(月曜日)を計算して減算し、曜日名とともに結果を表示したい場合があります。このような処理には DATE_FORMAT() 関数を使用します。SUBDATE() と WEEKDAY() を組み合わせることで、各日付が属する週の月曜日の日付を「Mon 19 Oct」のような形式で取得できます。以下、具体的な手順をサンプルコードとともに解説します。1. テーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable1820 ( AdmissionDate

  2. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),