簡體   English   中英

MySQL COUNT查詢結果始終為1

[英]MySQL COUNT query results in 1 always

我想知道為什么我的MySQL COUNT(*)查詢總是導致->num_rows等於1

$result = $db->query("SELECT COUNT( * ) FROM u11_users");
print $result->num_rows; // prints 1

從數據庫中獲取“真實數據”可以正常工作。

$result = $db->query("SELECT * FROM u11_users");
print $result->num_rows; // prints the correct number of elements in the table

這可能是什么原因?

因為Count(*)僅返回行數的一行。

示例:使用Count(*) ,結果類似於以下內容。

array('COUNT(*)' => 20);
echo $result['COUNT(*)']; // 20

參考

應該返回一行*。 要獲得計數,您需要:

$result = $db->query("SELECT COUNT(*) AS C FROM u11_users");
$row = $result->fetch_assoc();
print $row["C"];

*因為您使用的是聚合函數而不是GROUP BY

這就是為什么存在COUNT的原因,它總是返回包含選定行數的一行

http://dev.mysql.com/doc/refman/5.1/zh-CN/counting-rows.html

Count()是一個聚合函數,這意味着它僅返回包含實際答案的一行。 如果使用max(id)之類的函數,則會看到相同類型的事物。 如果一列的最大值是142,那么您就不會期望看到142條記錄,而只會看到一條值為142的記錄。同樣,如果行數是400,並且您要求count(*),那么您會發現不會得到400行,而是一行,答案是:400。

因此,要獲得計數,您將運行第一個查詢,然后僅訪問第一行(也是唯一行)中的值。

順便說一句,您應該使用count(*)方法,而不是查詢所有數據並使用$result->num_rows; 因為查詢所有行將花費更長的時間,因為您要拉回不需要的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM