返回页面时如何在SQL中使用seek分页?(博士后)
我想用seek方法(通过使用索引)创建分页。 在第一页上,我希望有最新的记录(具有最高的ID),因此当我转到下一页时,ID应该越来越低 假设数据库中有100个用户。因此,获取第一页的第一个查询是:返回页面时如何在SQL中使用seek分页?(博士后),sql,postgresql,pagination,Sql,Postgresql,Pagination,我想用seek方法(通过使用索引)创建分页。 在第一页上,我希望有最新的记录(具有最高的ID),因此当我转到下一页时,ID应该越来越低 假设数据库中有100个用户。因此,获取第一页的第一个查询是: SELECT * FROM users ORDER BY id DESC LIMIT 10 要获取另一页,我需要使用索引: SELECT * FROM users WHERE id < 90 ORDER BY id DESC LIMIT 10 这会获取所需的记录,但问题是它们会被排序,反之亦
SELECT * FROM users ORDER BY id DESC LIMIT 10
要获取另一页,我需要使用索引:
SELECT * FROM users WHERE id < 90 ORDER BY id DESC LIMIT 10
这会获取所需的记录,但问题是它们会被排序,反之亦然
我得到的是:
90 | tom@gmail.com
91 | patrick@gmail.com
92 | jimmy@gmail.com
...
我想要的是:
100 | hannah@gmail.com
99 | dog@gmail.com
98 | hello@gmail.com
...
我的问题是:
获取当前顺序为子查询的行,然后在外部查询:
select *
from (select *
from users
where id > 89
order by id asc
limit 10
)
order by id desc;
您可以将目标id增加10,而不是切换顺序和比较运算符?如果ID中有间隙(如果数据集不大),则可能需要使用“限制/偏移”。@clamp我的数据集很大,这就是我不使用“偏移/限制”的原因。可能会有差距,所以我不能把数字增加10
select *
from (select *
from users
where id > 89
order by id asc
limit 10
)
order by id desc;