Dùng INFORMATION_SCHEMA.TABLES kết hợp SUM(table_rows) để tính tổng số hàng của các bảng cùng tên nằm ở nhiều database khác nhau.
Ví dụ minh họa
Database web: bảng DemoTable1568 (3 hàng).
Database sample: bảng DemoTable1568 (4 hàng).
Truy vấn tổng số hàng:
SELECT SUM(table_rows) AS TotalNumberOfRows FROM information_schema.tables WHERE table_name = 'DemoTable1568';
Kết quả
| TotalNumberOfRows |
|---|
| 7 |
Giải thích
information_schema.tableschứa metadata của tất cả bảng trên server.table_rows: Số hàng ước lượng (cho InnoDB) hoặc chính xác (MyISAM).SUM()cộng dồn qua các database.
⚠️ Lưu ý quan trọng
- table_rows là ước lượng cho InnoDB (có thể sai lệch). Để chính xác 100%:
SELECT SUM(cnt) FROM (SELECT COUNT(*) AS cnt FROM web.DemoTable1568 UNION ALL SELECT COUNT(*) FROM sample.DemoTable1568) t; - Cần quyền
SELECTtrêninformation_schema(thường có mặc định). - Lọc thêm
table_schemanếu chỉ muốn một số DB:WHERE table_name = '...' AND table_schema IN ('web','sample')
Mở rộng: Lấy số hàng từng database
SELECT table_schema, table_name, table_rows FROM information_schema.tables WHERE table_name = 'DemoTable1568';