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

MySQLでレコードを最新の5件のみに絞り込んで取得する方法

MySQLでテーブルから最新(末尾)の5件のレコードだけを取得したい場合、ORDER BY句とLIMIT句を組み合わせるのが基本の方法です。降順に並べ替えてから5件に制限することで、簡単に目的の結果が得られます。

基本構文

SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 5;

ポイントは DESC(降順)で並べ替えることです。これにより、新しいレコード(IDの大きいもの)が先頭に来るため、LIMIT 5 を付けるだけで「最後の5件」を取得できます。

実際に試してみよう

1. サンプルテーブルを作成する

まず、以下のようにテーブルを作成します。

mysql> create table DemoTable820(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName varchar(100)
);
Query OK, 0 rows affected (0.53 sec)

2. レコードを挿入する

次に、INSERT文を使って6件のデータを登録します。

mysql> insert into DemoTable820(CustomerName) values('Chris');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable820(CustomerName) values('Robert');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable820(CustomerName) values('David');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable820(CustomerName) values('Bob');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable820(CustomerName) values('Carol');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable820(CustomerName) values('Adam');
Query OK, 1 row affected (0.08 sec)

3. 全レコードを確認する

SELECT文で全件を表示してみましょう。

mysql> select *from DemoTable820;

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

+----+--------------+
| Id | CustomerName |
+----+--------------+
|  1 | Chris        |
|  2 | Robert       |
|  3 | David        |
|  4 | Bob          |
|  5 | Carol        |
|  6 | Adam         |
+----+--------------+
6 rows in set (0.00 sec)

最後の5件だけを取得するクエリ

それでは、本題である「最後の5件のみに制限する」クエリを実行します。Idカラムを基準に降順で並べ替え、LIMIT 5を指定します。

mysql> select *from DemoTable820 order by Id DESC LIMIT 5;

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

+----+--------------+
| Id | CustomerName |
+----+--------------+
|  6 | Adam         |
|  5 | Carol        |
|  4 | Bob          |
|  3 | David        |
|  2 | Robert       |
+----+--------------+
5 rows in set (0.00 sec)

補足:昇順で表示したい場合

上記の結果は新しい順(降順)になっています。もし古い順(昇順)で最後の5件を表示したい場合は、サブクエリと組み合わせると便利です。

SELECT * FROM (
    SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5
) AS tmp ORDER BY Id ASC;

このように書くことで、「末尾の5件を選択しつつ、見た目は元の順序どおりに表示する」ということが可能になります。ログや履歴データなど、直近の数件だけを参照したい場面でぜひ活用してください。

  1. AccessデータベースでMySQLのLIMIT句をシミュレートする方法

    AccessデータベースでLIMIT句をシミュレートする方法Microsoft Accessには、MySQLのLIMIT句に直接相当する構文は存在しません。しかし、代わりにTOP句を使用することで、同じようにクエリ結果の先頭から指定した件数のレコードを取得することが可能です。この記事では、実際にテーブルを作成し、データを挿入しながら、AccessでLIMIT句と同等の処理を実現する手順を解説します。ステップ1:テーブルの作成まず、サンプル用のテーブルを作成します。ステップ2:レコードの挿入次に、INSERTコマンドを使用してテーブルにレコードを挿入します。ステップ3:LIMIT句をシミュレート

  2. MySQLで複数テーブルの結果をマージする方法|JOINを使った結合手順を解説

    MySQLで2つ以上のテーブルに分かれたデータを1つの結果としてまとめたい場合、JOIN(結合)を使うのが最もシンプルで効果的な方法です。この記事では、実際にテーブルを作成しながら、JOINによる結果のマージ手順をわかりやすく解説します。マージに使用するJOINの基本構文結果をマージするには、以下のような構文でシンプルなJOINを使用します。SELECT aliasName1.yourColumnName1, aliasName1.yourColumnName2, ... aliasName2.yourColumnName1 FROM yourTableName1 aliasN