我有一个简单的查询如下:
$q = "SELECT * FROM blah WHERE disabled = '0'";
Run Code Online (Sandbox Code Playgroud)
现在为了分页,我需要添加LIMIT到我的查询中,所以:
$q = "SELECT * FROM blah WHERE disabled = '0' LIMIT 10,20";
Run Code Online (Sandbox Code Playgroud)
而且,我想知道所有行的数量mysql_num_rows,但在上面的查询中它总是10,因为我限制了结果,所以对于所有行的数量,我需要再次执行相同的查询而不使用LIMIT语句.
并且以某种方式运行相同的查询两次以获得所有行的数量是愚蠢的,任何人都有更好的解决方案?
谢谢
Mat*_*son 10
MySQL 支持一个FOUND_ROWS()函数来查找从前一个有限查询返回的无限数量的行.
SELECT SQL_CALC_FOUND_ROWS * FROM blah WHERE disabled = '0' LIMIT 10,20
SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)
请注意,(a)您需要包含该SQL_CALC_FOUND_ROWS选项,并且(b)这是一个特定的MySQL扩展,它不能在另一个RDBMS上运行(尽管它们各自可能有自己的方式来执行此操作.)
这不一定是最好的做事方式,即使它可能是这样的; 你仍然需要发出两个语句,你引入了非标准的SQL,并且实际COUNT的转换可能与简单的相似SELECT COUNT(*)....我自己会倾向于坚持这样做的标准方式.