[英]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.