2011-01-20 22 views

Trả lời

49

'information_schema' nên được tổ chức có liên quan chi tiết. Bạn có thể thử

SELECT table_type, 
     table_name 
FROM information_schema.tables 
WHERE table_rows >= 1; 

để chọn từ cơ sở dữ liệu chọn lọc. Bạn cũng có thể lọc theo TABLE_SCHEMA:

SELECT table_schema, 
     table_type, 
     table_name 
FROM information_schema.tables 
WHERE table_rows >= 1 
    AND TABLE_SCHEMA=? 
+1

Điều đáng chú ý là đối với InnoDB nó không được đảm bảo làm việc 100% thời gian. 'table_rows' trong' information_schema' chỉ là một ước tính và có thể không phản ánh số hàng thực, xem http://dev.mysql.com/doc/refman/5.7/en/tables-table.html –

+0

Điều này không làm việc cho tôi ở tất cả, tôi đã đăng giải pháp đã làm việc dưới đây. – 3Gee

8

Sử dụng cơ sở dữ liệu 'information_schema' và chạy

SELECT * FROM `TABLES` WHERE `TABLE_ROWS` > 0 

này sẽ cung cấp cho bạn tất cả các bảng không rỗng trong máy chủ cho một cơ sở dữ liệu chạy nhất định

SELECT * FROM `TABLES` WHERE `TABLE_ROWS` > 0 AND `TABLE_SCHEMA` = 'database_name' 
+0

bạn có chắc nó hoạt động? Nó không dành cho tôi. Nó nói 'cột không xác định 'Table_Rows' trong mệnh đề where. ' – Espanta

+0

Bạn có sử dụng MySQL không? Phiên bản nào? –

+0

SELECT * FROM information_schema.'TABLES' WHERE 'TABLE_ROWS'> 0 @YasenZhelev chỉnh sửa nhỏ –

0

Bạn có thể chạy truy vấn này qua phpMyAdmin:

SELECT * 
FROM `information_schema`.`TABLES` 
WHERE `TABLE_ROWS` > 0 

sẽ trả về một danh sách các bảng không rỗng

+0

oops, thay đổi "=" thành> để tìm các bảng có hàng. – timpng1

2

Câu trả lời được chấp nhận không bao giờ làm việc cho tôi, information_schematable_rows có một số giá trị rất lạ.

này làm việc như một nét duyên dáng:

SHOW TABLE STATUS WHERE Rows > 0; 

Docs for SHOW TABLE STATUS

Các vấn đề liên quan