mysql select 限制偏移量大于实际记录的语句
mysql select statement with limit offset bigger than actually records
我创建了一个 mysql 语句,使用 LIMIT x, n
对结果进行分页(其中 x
是偏移量,n
是 returned 条目) .
偏移量是使用 GET-Vars 以 page=x
的形式创建的。
现在 Google 的索引中有一些来自旧爬网的奇怪条目,其中页面变量超过了结果集中记录的实际数量。
意味着,使用 page 变量创建的查询结果类似于 LIMIT 1000, 30
- 但查询只会 return 900
条目(因为 table 同时更改。这 return 当然是一个空结果集。
有没有办法告诉 mysql,如果偏移量超过 returned 记录,则只显示最后一个可能的结果集?我不想首先使用 COUNT()
进行额外的查询,因为这会使 mysql-server 的负载加倍(现在我正在使用 SQL_CALC_FOUND_ROWS
来确定总量如果没有 LIMIT
-语句,查询将 return 的记录数。
获取所有请求的行,至少有一行 (MySQL 5.6):
SELECT *
FROM `table`
LIMIT 1000, 30
UNION ALL (
SELECT *
FROM `table`
WHERE FOUND_ROWS() = 0
ORDER BY `id` DESC
LIMIT 1
)
我创建了一个 mysql 语句,使用 LIMIT x, n
对结果进行分页(其中 x
是偏移量,n
是 returned 条目) .
偏移量是使用 GET-Vars 以 page=x
的形式创建的。
现在 Google 的索引中有一些来自旧爬网的奇怪条目,其中页面变量超过了结果集中记录的实际数量。
意味着,使用 page 变量创建的查询结果类似于 LIMIT 1000, 30
- 但查询只会 return 900
条目(因为 table 同时更改。这 return 当然是一个空结果集。
有没有办法告诉 mysql,如果偏移量超过 returned 记录,则只显示最后一个可能的结果集?我不想首先使用 COUNT()
进行额外的查询,因为这会使 mysql-server 的负载加倍(现在我正在使用 SQL_CALC_FOUND_ROWS
来确定总量如果没有 LIMIT
-语句,查询将 return 的记录数。
获取所有请求的行,至少有一行 (MySQL 5.6):
SELECT *
FROM `table`
LIMIT 1000, 30
UNION ALL (
SELECT *
FROM `table`
WHERE FOUND_ROWS() = 0
ORDER BY `id` DESC
LIMIT 1
)