我有一个分页系统,我在SQL查询中使用限制来检索每个页面所需的数据,比方说如下:
SELECT foo
FROM table
LIMIT :start, 10
:start 值是动态的,以允许页面导航 现在,如果此值大于总行数,查询显然将返回空结果。
我想要做的是修复:start 参数的一种边界,以便它永远不会超过总行数,最坏的情况是返回最后十个条目。例如。登记/> 一种
SELECT foo
FROM table
LIMIT (
CASE WHEN :start > (
SELECT COUNT(*)
FROM table
) THEN :limit_value
ELSE
:start
END
), 10
答案 0 :(得分:0)
由于您正在动态计算:start
并且愿意拥有子查询,请使用:cnt
中的记录数进行预查询并更改
:start = max(0,min(:start, :cnt-10))