MySql - 什么可能导致FOUND_ROWS()返回不正确的值?

时间:2012-05-14 16:19:53

标签: mysql

我有一个类似于下面示例的查询(仅针对此帖子更改了列名称),它使用LIMIT返回来自MySql数据库的分页记录选择,加上未返回的记录数量通过FOUND_ROWS()应用。

在下面的情况下,SELECT FOUND_ROWS()只返回10,但我知道如果删除限制,查询将返回更多行。我也有这个工作,因为我期望许多其他非常相似的查询。

什么可能导致MySql返回一个意外的值,可以解释我在这里看到的内容?

SELECT 
id, 
firstname, 
surname, 
'' as anothercolumn1, 
date as anothercolumn2, 
'literal' as db 

FROM some_table 

WHERE 
filter_col LIKE @val1 
and surname LIKE @val2 
ORDER BY surname, firstname 
LIMIT 0, 10; 

SELECT FOUND_ROWS();

2 个答案:

答案 0 :(得分:4)

尝试在查询中使用SQL_CALC_FOUND_ROWS

SELECT 
SQL_CALC_FOUND_ROWS
id, 
firstname, 
....

答案 1 :(得分:3)

您必须在第一个SQL_CALC_FOUND_ROWS关键字后添加SELECT才能在致电FOUNC_ROWS()时获得准确的结果:

SELECT SQL_CALC_FOUND_ROWS
id,
firstname,
...

SELECT FOUND_ROWS();

Manual