2017-02-20 33 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這就是爲什麼查詢返回的行數少於實際值。