MySQLでテーブルの最後の2行を取得する方法をわかりやすく解説
MySQLでテーブルの末尾(最後)の2行だけを取得したい場合は、ORDER BY句とDESC(降順)、そしてLIMIT 2を組み合わせるのが最もシンプルで確実な方法です。降順に並べ替えてから先頭2件を取り出すことで、結果的に「最後の2行」が得られます。
基本の構文
SELECT * FROM テーブル名 ORDER BY Id DESC LIMIT 2;
それでは、実際にサンプルテーブルを作成しながら手順を確認していきましょう。
1. サンプルテーブルを作成する
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable763 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100)
);
Query OK, 0 rows affected (0.57 sec)2. レコードを挿入する
続いて、INSERT文を使って複数のレコードを登録します。
mysql> insert into DemoTable763(FirstName) values('John');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable763(FirstName) values('Sam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable763(FirstName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable763(FirstName) values('David');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable763(FirstName) values('Bob');
Query OK, 1 row affected (0.13 sec)3. 全レコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable763;
実行すると、以下のような結果が表示されます。
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | John | | 2 | Sam | | 3 | Carol | | 4 | David | | 5 | Bob | +----+-----------+ 5 rows in set (0.00 sec)
4. 最後の2行を取得するクエリ
ここで本題の「最後の2行」を取得するクエリを実行します。ORDER BY Id DESCでIDの降順(大きい順)に並べ替え、LIMIT 2で上位2件のみを取得します。
mysql> select *from DemoTable763 order by Id DESC LIMIT 2;
実行結果
+----+-----------+ | Id | FirstName | +----+-----------+ | 5 | Bob | | 4 | David | +----+-----------+ 2 rows in set (0.00 sec)
IDが5番目と4番目の、つまり挿入された順序で最も新しい2件のレコードが取得できました。
ポイントまとめ
- ORDER BY カラム名 DESC:指定したカラムを降順に並べ替えます。AUTO_INCREMENTの主キーを使えば、挿入順に基づいた並び替えが可能です。
- LIMIT 2:取得する行数を2行に制限します。この数値を変更すれば、最後の3行や5行など任意の行数を取得できます。
なお、降順で取得した結果を元の昇順に戻したい場合は、サブクエリを使って外側でもう一度ORDER BY Id ASCとすれば、見た目を自然な順序に整えることもできます。
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected
-
MySQLのCONCAT_WS()関数で文字列を連結しながら条件に一致する行を抽出する方法
MySQLのCONCAT_WS()関数とはMySQLでは、CONCAT_WS()関数を使用することで、複数のカラムや値を指定した区切り文字で連結できます。さらにWHERE句と組み合わせれば、条件に一致する行だけを抽出しながら、読みやすい形式の文字列として出力することも可能です。この記事では、実際にテーブルを作成し、CONCAT_WS()と条件指定を組み合わせたクエリの実行例を順番に解説します。サンプルテーブルの作成まず、ユーザー情報を格納するテーブル「demo38」を作成しましょう。mysql> create table demo38-> (-> user_id int,-&