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