1

我正在使用以下查询从 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+

如果没有限制,我如何计算此查询将返回的总行数,以便我可以将其显示给用户?

4

2 回答 2

4

这很简单,只需使用select count(*) from ...代替select * from ...

如果您想在同一个查询中完成所有操作,您可以在这里得到答案:

如何在MYSQL中对单个查询中的记录进行计数和限制?

另一个SELECT FOUND_ROWS();答案就是答案。

于 2012-05-09T23:23:06.030 回答
4

SQL_CALC_FOUND_ROWS 和 "SELECT FOUND_ROWS()" 是你想要的:

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

于 2012-05-09T23:28:06.670 回答