如何计算从MySQL查询返回的结果总数?
我使用下面的查询抢从MySQL数据库的结果:如何计算从MySQL查询返回的结果总数?
$query = $this->db->query("
SELECT * FROM results r
INNER JOIN categories c on r.id = c.result_id
INNER JOIN tags t on r.id = t.result_id
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
$tag_string
AND (r.scope = 'all' OR r.scope = '$subdomain')
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
ORDER BY r.usefulness DESC
LIMIT 10 OFFSET $offset
");
返回的结果有可能是500+
我怎么能算行的总金额此查询将返回如果有没有限制,所以我可以显示给用户?
SQL_CALC_FOUND_ROWS和 “SELECT FOUND_ROWS()” 是你想要什么:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
很简单,只需使用select count(*) from ...
代替select * from ...
如果你喜欢做这一切在同一查询中,你有你的答案在这里:
How to count and limit record in a single query in MYSQL?
另外一个SELECT FOUND_ROWS();
将是回答。
他要求,而不限制计数。 –
限制并不重要 - 无论如何,计数都是正确的。 –
哦,有趣。 +1 –
我实际上已经尝试过,并且得到以下错误... 您的SQL语法错误;请检查与您的MySQL服务器版本对应的手册,以便在第10行'SELECT FOUND_ROWS()'附近使用正确的语法。SELECT SQL_CALC_FOUND_ROWS * FROM results r INNER JOIN categories c on r.id = c.result_id INNER JOIN标记t ('purchase','single_family','usda')和r.id = t.result_id WHERE c.name AND(r.scope ='all'或r.scope ='redflagwiki')GROUP BY r.id HAVING COUNT(c.c_id)= 3 ORDER BY r.usefulness DESC LIMIT 10 OFFSET 0 SELECT FOUND_ROWS(); –
这个过程仍然需要通过2个查询来完成:如果您在提示符下键入该内容,请确保在“OFFSET 0”之后添加了分号。在PHP中,执行初始查询只需添加SQL_CALC_FOUND_ROWS,然后再执行另一个查询“SELECT FOUND_ROWS();” –
非常感谢!这很好 –