Can I get MySQL to return all non-empty tables in a database? Much like \"SHOW TABLES\" but only those that are not empty.
You can run this query via phpMyAdmin:
SELECT *
FROM `information_schema`.`TABLES`
WHERE `TABLE_ROWS` > 0
will return a list of non-empty tables
'information_schema' should be holding the relevant details. You can try
SELECT table_type,
table_name
FROM information_schema.tables
WHERE table_rows >= 1;
to select from a selective database. You can also filter by TABLE_SCHEMA
:
SELECT table_schema,
table_type,
table_name
FROM information_schema.tables
WHERE table_rows >= 1
AND TABLE_SCHEMA=?
The accepted answer never worked for me, information_schema table_rows have some very weird values.
This worked like a charm:
SHOW TABLE STATUS WHERE Rows > 0;
Docs for SHOW TABLE STATUS
Use database 'information_schema' and run
SELECT * FROM `TABLES` WHERE `TABLE_ROWS` > 0
this will give you all non-empty tables in the server for a certain database run
SELECT * FROM `TABLES` WHERE `TABLE_ROWS` > 0 AND `TABLE_SCHEMA` = 'database_name'