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

MySQLでn番目のレコードを取得する方法|LIMIT句の使い方を実例で解説


MySQLのクエリ結果からn番目のレコードを取得したい場合、LIMIT句を使うのが最も手軽な方法です。基本となる構文は以下のとおりです。

select *from yourTableName order by yourColumnName limit n,1;

LIMIT句は「limit スキップする件数, 取得する件数」の形式で指定します。つまり、オフセットにnを設定すれば、先頭のn件を読み飛ばし、その直後の1件だけを取り出せるという仕組みです。

サンプルテーブルの作成

それでは、実際の動きを確認するためにテーブルを作成してみましょう。テーブル作成用のクエリは次のとおりです。

mysql> create table NthRecordDemo
    -> (
    -> Id int,
    -> Name varchar(200)
    -> );
Query OK, 0 rows affected (0.92 sec)

テストデータの挿入

続いて、insert文で複数のレコードを登録します。

mysql> insert into NthRecordDemo values(100,'John');
Query OK, 1 row affected (0.09 sec)

mysql> insert into NthRecordDemo values(101,'Bob');
Query OK, 1 row affected (0.14 sec)

mysql> insert into NthRecordDemo values(102,'Carol');
Query OK, 1 row affected (0.22 sec)

mysql> insert into NthRecordDemo values(103,'Smith');
Query OK, 1 row affected (0.18 sec)

mysql> insert into NthRecordDemo values(104,'Johnson');
Query OK, 1 row affected (0.16 sec)

mysql> insert into NthRecordDemo values(105,'Sam');
Query OK, 1 row affected (0.16 sec)

mysql> insert into NthRecordDemo values(106,'David');
Query OK, 1 row affected (0.13 sec)

登録済みレコードの確認

select文を実行して、テーブル内の全レコードを表示してみます。

mysql> select *from NthRecordDemo;

実行結果は以下のとおりです。

+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 101  | Bob     |
| 102  | Carol   |
| 103  | Smith   |
| 104  | Johnson |
| 105  | Sam     |
| 106  | David   |
+------+---------+
7 rows in set (0.00 sec)

n番目のレコードを取得するクエリ

それでは、実際にn番目のレコードを取得してみましょう。Id列で並べ替えを行い、「limit 6,1」と指定することで、先頭の6件をスキップした次の1件を取り出せます。

mysql> select *from NthRecordDemo order by Id limit 6,1;

実行結果は以下のとおりです。

+------+-------+
| Id   | Name  |
+------+-------+
| 106  | David |
+------+-------+
1 row in set (0.00 sec)

このように、LIMIT句の第1引数(オフセット)にスキップしたい件数を、第2引数に「1」を指定するだけで、任意の位置にあるレコードを簡単に取得できます。大量のデータの中から特定の順位の行を取り出したいときに、ぜひ活用してみてください。

  1. MySQLのSELECT文で特定のカラム(列)のレコードを取得する方法

    はじめにMySQLでSELECTクエリを実行する際、SELECT *を使うとすべてのカラムが取得されますが、カラム名を明示的に指定すれば、必要なカラム(列)のデータだけを効率的に取り出せます。この記事では、サンプルテーブルを作成しながら、特定のカラムのレコードを取得する手順を解説します。1. テーブルの作成まず、CREATE TABLE文でサンプル用のテーブルを作成しましょう。mysql> create table DemoTable1837    (    StudentId int NOT NULL AU

  2. MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方

    MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829      (      Name varchar(