我创建了一个mysql语句,使用LIMIT x, n
对结果进行分页(其中x
是偏移量,n
是返回的条目。
使用GET-Vars以page=x
。
现在Google的索引中有一些奇怪的条目来自旧的抓取,其中页面变量超过了结果集中的实际记录数量。
意味着,使用页面变量创建的查询会产生类似LIMIT 1000, 30
的内容 - 但查询只会返回900
条目(因为表格内容同时发生了变化。这会返回一个空结果 - 当然是设定。
有没有办法告诉mysql,如果偏移量超过返回的记录,只显示最后一个可能的结果集?我不想首先使用COUNT()
进行额外的查询,因为这会使mysql-server上的负载加倍(现在我使用SQL_CALC_FOUND_ROWS
来确定总量查询将在没有LIMIT
- Statement的情况下返回的记录。
答案 0 :(得分:2)
获取所有请求的行,至少有一行(MySQL 5.6):
SELECT *
FROM `table`
LIMIT 1000, 30
UNION ALL (
SELECT *
FROM `table`
WHERE FOUND_ROWS() = 0
ORDER BY `id` DESC
LIMIT 1
)