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」を指定するだけで、任意の位置にあるレコードを簡単に取得できます。大量のデータの中から特定の順位の行を取り出したいときに、ぜひ活用してみてください。
-
MySQLのSELECT文で特定のカラム(列)のレコードを取得する方法
はじめにMySQLでSELECTクエリを実行する際、SELECT *を使うとすべてのカラムが取得されますが、カラム名を明示的に指定すれば、必要なカラム(列)のデータだけを効率的に取り出せます。この記事では、サンプルテーブルを作成しながら、特定のカラムのレコードを取得する手順を解説します。1. テーブルの作成まず、CREATE TABLE文でサンプル用のテーブルを作成しましょう。mysql> create table DemoTable1837 ( StudentId int NOT NULL AU
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(