我有一个包含 LIMIT 子句的查询,该子句一次返回 10 个结果中的 100 个结果。我想要的也是计算结果总数(即 100)。我是否必须在没有 LIMIT 子句的情况下执行第二次查询,然后计算返回的行数?我不想这样做,因为查询非常昂贵。
select sql_calc_found_rows * from table .... limit x;
select found_rows();
查看手册
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
它说:
如果您使用的是SELECT SQL_CALC_FOUND_ROWS,MySQL必须计算完整结果集中有多少行。但是,这比在没有 LIMIT 的情况下再次运行查询更快,因为不需要将结果集发送到客户端。
在 mysql 上执行第二个查询:
SELECT FOUND_ROWS();