接受的答案似乎是错误的。因为它建议在带有LIMIT的查询之后使用found_rows()。
答案:问题是关于RETURN 1,在某些情况下,作为found_rows()的结果0的问题;
当您的第一个选择语句后执行一些其他查询时,会发生这种情况。 尤其是当您使用IDE或某个客户端运行查询时,在查询之前和之后执行一些额外的“准备”查询。
和found_rows()将返回在服务器上运行的LAST查询返回的结果的数量。在这种情况下,这不是我们所期望的。
因此返回1或0错误。
验证: 您可以通过在服务器上启用常规日志记录并执行查询来验证此情况。 您会看到在第一个查询和找到的行查询之间执行的一对附加查询。
FIX 存储过程或旧的COUNT(*)。
表现明智,几乎没有任何区别。
附加
,如果你的目的是要找到行的总数返回然后它的罚款。 和SQL_CALC_FOUND_ROWS的使用变得不重要。
这里是一条通用规则,找到的行不需要LIMIT,也不需要SQL_CALC_FOUND_ROWS。 但其中三个可以一起使用,以提供非常有用的结果。
即运行类似的东西。
SELECT SQL_CALC_FOUND_ROWS * from some_table_name LIMIT 0,10;
SELECT FOUND_ROWS();
我们得到这个会被询问时,我们从sometable_name运行 SELECT *返回的行数; ie:没有限制。
话说回来,
SELECT * from some_table_name LIMIT 0, 10;
SELECT FOUND_ROWS();
会给我们的结果的总数,其中限制的COS将< = 10。并没有服务于任何实际目的,但这不是一个错误。
你想知道总记录? – 2013-02-13 06:12:09
先生这不是我的解决方案PLZ建议最好的一个忘了旧/新等 – okconfused 2013-02-13 06:12:42
是的Devang Rathod,但通过使用选择找到的行 – okconfused 2013-02-13 06:13:24