MySQLで最後に作成されたテーブル名(最新)を取得するクエリの書き方
INFORMATION_SCHEMA.TABLESを使って最新のテーブル名を取得する方法
MySQLで「最後に作成されたテーブル」の名前を取得したい場合は、INFORMATION_SCHEMA.TABLESを利用します。この情報スキーマには、データベース内のすべてのテーブルに関するメタデータ(テーブル名、作成日時など)が格納されており、create_timeで並べ替えることで、最新のテーブルを簡単に特定できます。
ここからは、実際にサンプルテーブルを作成し、最新のテーブル名を取得する手順を見ていきましょう。
1. サンプルテーブルの作成
まず、今回の例で使うテーブルを作成します。このテーブルが「最新のテーブル」となります。
mysql> create table DemoTable1323
-> (
-> FirstName varchar(10)
-> );
Query OK, 0 rows affected (0.43 sec)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable1323 values('Chris');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1323 values('David');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1323 values('Bob');
Query OK, 1 row affected (0.11 sec)3. テーブルの中身を確認
SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。
mysql> select * from DemoTable1323;
実行結果は以下のとおりです。
+-----------+
| FirstName |
+-----------+
| Chris |
| David |
| Bob |
+-----------+
3 rows in set (0.00 sec)
4. 最後に作成されたテーブル名を取得するクエリ
それでは本題のクエリです。information_schema.tablesに対してcreate_timeの降順(DESC)で並べ替えを行い、LIMIT 1で先頭の1件だけを取得することで、最も新しく作成されたテーブルを特定できます。
mysql> select table_name, create_time AS `Time`
-> from information_schema.tables
-> where table_schema = 'web'
-> order by create_time desc limit 1;
実行結果は以下のようになります。
+---------------+---------------------+
| TABLE_NAME | Time |
+---------------+---------------------+
| demotable1323 | 2019-09-18 22:03:24 |
+---------------+---------------------+
1 row in set (0.02 sec)
クエリのポイント解説
- table_schema = 'web':対象となるデータベース(スキーマ)名を指定します。自分の環境に合わせて適切なデータベース名に置き換えてください。
- order by create_time desc:テーブルの作成日時を降順に並べ替えます。これにより、最新のテーブルが先頭に来ます。
- limit 1:結果を1件だけ取得します。降順ソートとの組み合わせで、「最後に作成されたテーブル」が得られます。
なお、複数のテーブルを同時に作成した場合など、create_timeの精度が秒単位であることによる同時刻の扱いに注意が必要です。そのようなケースでは、テーブル命名規則に連番やタイムスタンプを含めておくと確実に判別できます。
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI
-
MySQLでテーブルをクエリし、直近3日より前に投稿された行を取得する方法
はじめにここでは、現在の日付を「2019-10-20」として話を進めます。まずは例として、テーブルを作成してみましょう。mysql> create table DemoTable1582 -> ( -> PostedDate datetime -> );Query OK, 0 rows affected (13.36 sec)レコードの挿入insertコマンドを使用して、テーブルにいくつかのレコードを挿入します。mysql> insert into DemoTable1582 values(2019-01-21 12:34:40);Query O