我有一个分页系统,我在 SQL 查询中使用限制来检索每个页面所需的数据,例如:
SELECT foo
FROM table
LIMIT :start, 10
然后,:start 值是动态的,以允许页面导航。
现在,如果该值大于总行数,则查询显然会返回空结果。
我想做的是修复 :start 参数的一种边界,这样它就不会超出总行数,最坏的情况是返回最后十个条目。< br/> 一种
SELECT foo
FROM table
LIMIT (
CASE WHEN :start > (
SELECT COUNT(*)
FROM table
) THEN :limit_value
ELSE
:start
END
), 10
最佳答案
由于您正在动态计算 :start
并且愿意有一个子查询,因此将记录数执行预查询到 :cnt
并更改
:start = max(0,min(:start, :cnt-10))
关于mysql limit 关键字的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544299/