MySQL:从'select tables_names ...'返回所有表

Posted

技术标签:

【中文标题】MySQL:从\'select tables_names ...\'返回所有表【英文标题】:MySQL: Return all tables from 'select tables_names ...'MySQL:从'select tables_names ...'返回所有表 【发布时间】:2017-09-13 22:52:54 【问题描述】:

我正在使用:

SELECT table_name AS tables FROM information_schema.tables WHERE table_name LIKE 'address_%'

... 获取数据库中所有表的列表。有人建议我使用这种方法,而不是“显示表格”,请参阅:

mysql: SHOW TABLES - define column name

...因为我可以命名列(上面的 AS 子句,它不适用于 SHOW TABLES)。

正如预期的那样,这给了我以下输出:

tables  
address_13e625c01bea04b1d311
address_147e32243c710542fb43
address_3b046272656fa61d7550
address_4f83b2740fc4f038775a
etc.

如果我尝试更改 SELECT 语句以将所有表(不仅仅是以“地址_”开头的表)更改为以下任何一个:

SELECT table_name AS tables FROM information_schema.tables WHERE table_name LIKE '%'

SELECT table_name AS tables FROM information_schema.tables WHERE table_name LIKE ''

SELECT table_name AS tables FROM information_schema.tables

这些都返回:

tables  
CHARACTER_SETS
CLIENT_STATISTICS
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
COLUMN_PRIVILEGES
etc.

我不知道这些值是什么(从外观上看是数据库属性),但它肯定不是数据库中的表列表('address_'(来自上面)甚至不存在。

有谁知道我应该使用什么'SELECT table_name ...'语句,记住我想命名列(这就是为什么我不能使用'SHOW TABLES')来获取给定表的完整列表数据库?

【问题讨论】:

使用SELECT * FROM information_schema.tables 查看表格包含的内容。然后您可以决定应用哪些过滤器。 我会说SELECT table_name AS tables FROM information_schema 您可能希望将查询限制为仅查看您感兴趣的 table_schema(即您的数据库)。 【参考方案1】:

感谢您的建议。

基于这些,我得到了答案,那就是:

SELECT TABLE_NAME AS 'table' FROM information_schema.tables where TABLE_name like '%'

这只是在名为 table 的列中返回表名。

谢谢大家

【讨论】:

以上是关于MySQL:从'select tables_names ...'返回所有表的主要内容,如果未能解决你的问题,请参考以下文章

使用 case 语句从 SELECT 更新记录。 (mysql)

Mysql从select多次插入

Html Select Box 从 mysql 中获取值

从select语句更新MySQL中的两列

PHP MySQL Select 之Select

Flink SQL 在执行 Select 时内存不足 - 从 RDS 插入到 Mysql