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