具有最大值的mysql limit关键字

时间:2017-10-03 12:09:54

标签: mysql max conditional-statements limit

我有一个分页系统,我在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

1 个答案:

答案 0 :(得分:0)

由于您正在动态计算:start并且愿意拥有子查询,请使用:cnt中的记录数进行预查询并更改

:start = max(0,min(:start, :cnt-10))