当使用基于值分页时
select * from articles
where id > @start_value
limit @page_size
如何计算 @start_value
只给定页码?
即:比如说,我有一个网站和 html 页面,其中包含我需要分页的文章列表。但即使要呈现第一页,我也需要以某种方式计算 @start_value
。来自用户的输入将是他点击的页面的编号;对于第一页,默认情况下为 1。
鉴于 1,我将如何计算
@start_value
?或给定任何随机页面,我仍将如何计算
@start_value
?
请注意,表的 id
列的值不一定是连续的,即使 id
是自动递增的也是如此。
最佳答案
首先,没有任何排序的分页并不理想。如果不包含和 order by
子句,您无法保证 SQL 将如何对结果进行排序。
您还需要知道页面大小来计算起始值,但给定 @page_num
和 @page_size
:@start_value
由 @start_value = @page_num * @page_size;
计算。
这里没有 where
子句,而是有 limit
/offset
select *
from articles
order by id
limit @page_size
offset (@page_size * @page_num)
关于sql - 处理给定页面编号的基于值的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54464388/