2017-02-20 34 views
0

我正在编写从mysql表(存储引擎:InnoDB)获取记录总数的代码,并在前端显示它。我使用COUNT(ID),对于这一点,象下面这样:如何从mysql表中获取总行数?

SELECT COUNT(id) AS total_count FROM my_table_name 

,但我得到6行少总计数,即我有73条记录完全,但我只得到67条记录的总数。我寻找其他的解决方案,我发现一个解决方案如下图所示:

SHOW TABLE STATUS FROM my_table_name; 

,但它抛出类似“拒绝用户my_user_name“访问@‘localhost’的数据库‘MY_TABLE_NAME’” MySQL访问被拒绝错误。谁能告诉我如何做到这一点。提前致谢。

+0

How do you say有73条记录?你可能已经删除了几行之间。 –

+0

它将返回所有行。你不需要'SHOW TABLE STATUS'并且它需要不同的权限 – bansi

+0

我正在直接从phpMyAdmin监视那个特定的表,以便我能够知道这个数量。 –

回答

0

你确定你的表有73条记录?或者你只是看最高的ID?中间可能会有一些缺失的id(删除)。查询看起来很好,它应该工作。请在phpMyAdmin再次检查

+0

谢谢Cashbee,你应该得到我的投票。 –

-1
SELECT COUNT(*) AS total_count FROM my_table_name 

也许不是所有的行都具有id

+0

我已经使用过,但也有同样的结果后,只有我使用COUNT(id)查询 –

+0

技术上,字段ID应该是唯一的,主要和自动增量,所以SELECT count(id)或SELECT count(*)应该返回相同的值。但如果不是这种情况(*)肯定会返回总行数 –

0

的MySQL如果名为count函数将返回所有行与参数*像下面

select count(*) as total from myTable 

但在情况下,如果你提供你的表中任意字段名称,如

select count(id) as total from myTable 

那么只有那些行的计数将被返回,哪个id字段不是NULL。因此,可能有一些行有他们的ID字段NULL这就是为什么查询返回的行数少于实际值。