如何获取MySQL数据库中的总行数?

时间:2014-04-05 02:49:17

标签: php mysql sql

我的MYSQL数据库中有很多表。我希望能够回显数据库中所有行的总数。

所以基本上我想拥有它,所以下图中的圆圈总和在PHP中回显。 enter image description here

这是我当前的代码,只显示一个表中的总行数($ txid)。我尝试用*替换$ txid,但它不起作用。任何帮助是极大的赞赏。谢谢。     

mysql_select_db($dbname);

$result = mysql_query("select count(1) FROM $txid");
$row = mysql_fetch_array($result);

$total = $row[0];
echo $total;

?>

3 个答案:

答案 0 :(得分:9)

使用架构:

SELECT SUM(TABLE_ROWS) 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = '{DB_NAME}'

这就是phpmyadmin正在使用的。

来源:Get record counts for all tables in MySQL database

答案 1 :(得分:1)

没有办法在多个表之间“通配” - 这就是为什么规范化[面向行的]设计是好的的原因之一。

相反,必须以这样的方式编写查询(或多个查询),以便手动指定所有表 - 也就是说,每个表都有一个单独的SELECT 。然后可以将它们与UNION ALL和SUM进行分组,或者在单独运行每个查询后用PHP求和。

select SUM(i) as total
from (
  select count(*) as i FROM tx
  union all
  select count(*) as i FROM tx2
  -- repeated for each table
) counts

(SQL可以在PHP或MySQL中从要查询的表列表中动态生成。)

如果您只需要粗略估计,则可以查询INFORMATION_SCHEMA TABLES.TABLE_ROWS表 - 实际上这会提供面向行的设计。但是,至少对于InnoDB表, not 保证返回与直接COUNT相同的结果。

  

对于InnoDB表,行计数只是SQL优化中使用的粗略估计。

答案 2 :(得分:1)

使用INFORMATION_SCHEMA数据库。它始终是获取元数据信息的好方法:

SELECT SUM(TABLE_ROWS)
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'your_database';

这是您更新的PHP代码:

mysql_select_db($dbname);

$result = mysql_query("SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$dbname'");
$row = mysql_fetch_array($result);

$total = $row[0];
echo $total;

详细了解INFORMATION_SCHEMA.TABLES