1

我有一个类似于下面示例的查询(此帖子仅更改了列名),它使用 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();
4

2 回答 2

4

尝试SQL_CALC_FOUND_ROWS在您的查询中使用:

SELECT 
SQL_CALC_FOUND_ROWS
id, 
firstname, 
....
于 2012-05-14T16:23:03.610 回答
3

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

SELECT SQL_CALC_FOUND_ROWS
id,
firstname,
...

SELECT FOUND_ROWS();

手动的

于 2012-05-14T16:24:09.747 回答