1. ホーム
  2. マイスル

[解決済み】MySQLでSELECT文を使ってテーブル名を取得する。

2022-03-28 23:54:02

質問

MySQLでは、データベース内のテーブルをリストアップすることができますね。

SHOW TABLES

しかし、これらのテーブル名を、例えば別のテーブルに挿入したいのです。

INSERT INTO metadata(table_name) SHOW TABLES /* does not work */

標準的なSELECT文を使ってテーブル名を取得する方法はありますか、以下のような。

INSERT INTO metadata(table_name) SELECT name FROM table_names /* what should table_names be? */

解決方法は?

すべてのテーブルの名前を取得するには、次のようにします。

SELECT table_name FROM information_schema.tables;

特定のデータベースからテーブル名を取得するには、次のようにします。

SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_database_name';

さて、元の質問に答えるには、次のクエリを使います。

INSERT INTO table_name
    SELECT table_name FROM information_schema.tables
        WHERE table_schema = 'your_database_name';

詳しくはこちらをご覧ください。 http://dev.mysql.com/doc/refman/5.0/en/information-schema.html