MySQL数据库中的非空表列表

41 mysql sql

我可以让MySQL返回数据库中的所有非空表吗?很像"SHOW TABLES",但只有那些不是空的.

ajr*_*eal 63

'information_schema'应该持有相关细节.你可以试试

SELECT table_type,
       table_name
FROM information_schema.tables
WHERE table_rows >= 1;
Run Code Online (Sandbox Code Playgroud)

从选择性数据库中进行选择.您还可以按TABLE_SCHEMA以下方式过滤:

SELECT table_schema,
       table_type,
       table_name 
FROM information_schema.tables
WHERE table_rows >= 1
  AND TABLE_SCHEMA=?
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,对于 InnoDB 来说,并不能保证 100% 的时间都能工作。“information_schema”中的“table_rows”只是一个估计,可能无法反映真实的行数,请参阅http://dev.mysql.com/doc/refman/5.7/en/tables-table.html (2认同)

3Ge*_*Gee 8

接受的答案对我来说没有用,information_schema table_rows有一些非常奇怪的值.

这就像一个魅力:

SHOW TABLE STATUS WHERE Rows > 0;
Run Code Online (Sandbox Code Playgroud)

SHOW TABLE STATUS的文档


Yas*_*lev 7

使用数据库'information_schema'并运行

SELECT * FROM `TABLES` WHERE `TABLE_ROWS` > 0 
Run Code Online (Sandbox Code Playgroud)

这将为服务器中的某个数据库运行提供所有非空表

SELECT * FROM `TABLES` WHERE `TABLE_ROWS` > 0  AND `TABLE_SCHEMA` = 'database_name'
Run Code Online (Sandbox Code Playgroud)