MySQLデータベースから先頭10件のレコードを取得する方法
MySQLで先頭10件のデータを取得する基本
MySQLデータベースから先頭(最初)の10件のレコードを取得するには、SQLのORDER BY句とLIMIT 10を組み合わせて使用します。
基本的な構文は以下のとおりです。
SELECT * FROM テーブル名 ORDER BY IDカラム名 LIMIT 10;
ORDER BY句で並べ替えの基準となるカラムを指定し、LIMIT 10によって取得件数を10件に制限します。IDカラムで昇順に並べ替えれば、登録順に先頭10件を取得できます。
動作確認用テーブルの作成
実際に構文を理解するために、サンプルテーブルを作成してみましょう。テーブル作成クエリは次のとおりです。
mysql> create table Clients
-> (
-> Client_Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName varchar(20)
-> );
Query OK, 0 rows affected (0.51 sec)このテーブルは、自動採番されるClient_Idを主キーとし、顧客名を格納するClientNameカラムを持っています。
サンプルデータの挿入
次に、INSERT文を使って複数のレコードを挿入します。
mysql> insert into Clients(ClientName) values('Larry');
Query OK, 1 row affected (0.09 sec)
mysql> insert into Clients(ClientName) values('Sam');
Query OK, 1 row affected (0.19 sec)
mysql> insert into Clients(ClientName) values('Bob');
Query OK, 1 row affected (0.18 sec)
mysql> insert into Clients(ClientName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into Clients(ClientName) values('John');
Query OK, 1 row affected (0.17 sec)
mysql> insert into Clients(ClientName) values('James');
Query OK, 1 row affected (0.14 sec)
mysql> insert into Clients(ClientName) values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into Clients(ClientName) values('Carol');
Query OK, 1 row affected (0.15 sec)
mysql> insert into Clients(ClientName) values('Mike');
Query OK, 1 row affected (0.12 sec)
mysql> insert into Clients(ClientName) values('Maxwell');
Query OK, 1 row affected (0.27 sec)
mysql> insert into Clients(ClientName) values('Chris');
Query OK, 1 row affected (0.23 sec)
mysql> insert into Clients(ClientName) values('Ramit');
Query OK, 1 row affected (0.18 sec)これで合計12件のレコードが登録されました。
全レコードの表示
まず、SELECT文ですべてのレコードを表示して確認します。
mysql> select *from Clients;
実行結果は以下のとおりです。
+-----------+------------+ | Client_Id | ClientName | +-----------+------------+ | 1 | Larry | | 2 | Sam | | 3 | Bob | | 4 | David | | 5 | John | | 6 | James | | 7 | Robert | | 8 | Carol | | 9 | Mike | | 10 | Maxwell | | 11 | Chris | | 12 | Ramit | +-----------+------------+ 12 rows in set (0.00 sec)
ORDER BYとLIMITを使って先頭10件を取得する
それでは、先頭10件のレコードを取得するクエリを見てみましょう。
mysql> select *from Clients ORDER BY Client_Id LIMIT 10;
実行結果は以下のとおりです。
+-----------+------------+ | Client_Id | ClientName | +-----------+------------+ | 1 | Larry | | 2 | Sam | | 3 | Bob | | 4 | David | | 5 | John | | 6 | James | | 7 | Robert | | 8 | Carol | | 9 | Mike | | 10 | Maxwell | +-----------+------------+ 10 rows in set (0.00 sec)
Client_Idで昇順に並べ替えたうえで10件に制限しているため、IDが1〜10のレコードが正しく取得できています。
代替方法:LIMIT句にオフセットを指定する
先頭10件を取得する別の方法として、LIMIT句にオフセット(開始位置)を指定する書き方もあります。
mysql> select *from Clients limit 0,10;
実行結果は以下のとおりです。
+-----------+------------+ | Client_Id | ClientName | +-----------+------------+ | 1 | Larry | | 2 | Sam | | 3 | Bob | | 4 | David | | 5 | John | | 6 | James | | 7 | Robert | | 8 | Carol | | 9 | Mike | | 10 | Maxwell | +-----------+------------+ 10 rows in set (0.00 sec)
LIMIT 0,10は「0番目(先頭)から10件取得する」という意味です。この形式はページネーション(ページ送り)を実装する際にも便利で、例えばLIMIT 10,10とすれば11件目から10件を取得できます。
まとめ
- 先頭N件を取得するには
ORDER BY句とLIMIT句を組み合わせる LIMIT 取得件数またはLIMIT オフセット, 取得件数の2つの書き方が使える- 並び順を安定させるため、主キーなどのカラムを明示的に指定することが推奨される
-
MySQLで再帰的なSELECTクエリを実行する方法【初心者向けに具体例つきで解説】
MySQLでは、ユーザー定義変数(セッション変数)を活用することで、再帰的なSELECTクエリを実現できます。本記事では、実際にテーブルを作成し、データを挿入したうえで、再帰的なSELECTの具体的な書き方を順を追って解説します。 1. サンプルテーブルの作成 まず、再帰的なSELECTを試すためのサンプルテーブルを作成します。テーブルの作成にはCREATEコマンドを使用します。 mysql> CREATE table tblSelectDemo - > ( - > id int, - > name varchar(100) - > );
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected