在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

Mysql相关问答推荐

正在获取MySQL死锁,因为这个查询需要很长时间.

如何在使用VALUES()插入时指定jOOQ中的行别名

mysql 获取每个单词的第一个字母

使用不同的 where 列进行子 Select

MySQL中的where语句会 destruct 全外连接.

生成json数据并根据特定表的匹配条件进行过滤

如何从mysql中的不可用日期范围获取可用日期范围?

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

为大表优化 Django 模型

Mysql JSON_REMOVE 数组键和值 (MariaDB)

如何通过if语句对SQL查询进行排序

MYSQL 或 Laravel Eloquent 如何从这个订单中统计细节

Over() 函数不覆盖表中的所有行

授予用户对 MySQL 中有限数量表的访问权限

MAMP mysql 服务器无法启动.没有mysql进程正在运行

如何在 MySQL 中为用户设置默认架构

按日期和时间降序排序?

MySQL使用phpmyadmin重新排列列的顺序

在 MySQL 中签名或未签名

如何将数组存储到mysql中?