MySQLでSELECT文を使用してテーブル名を取得する 質問する

MySQLでSELECT文を使用してテーブル名を取得する 質問する

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? */

ベストアンサー1

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

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

おすすめ記事