问题描述
这很复杂,但是我将尝试解释我的意思。我的想法是在用户滚动页面时将服务器的下50条记录发送给客户端。当用户到达前端指定的位置时,fontend将向服务器询问下50个实体。 我需要什么SQL查询 ?
查询的工作方式应类似于(在伪sql中):SORT TABLE table_name SELECT entity BY INDEX (150-200)
。
我希望我的解释可以理解。
非常感谢;)
编辑1
我正在使用Postgresql。
解决方法
我认为答案将取决于您使用的SQL方言。下面是一个使用T-SQL的小例子。它应该为您指明正确的方向。 在这里,您应该找到使用T-SQL语言的问题的答案: FETCH and OFFSET explained
编辑: 对于PostgreSQL,请检查以下链接: PostgreSQL FETCH example
SELECT
product_name,list_price
FROM
production.products
ORDER BY
list_price,product_name
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
,
如果您正在运行最新版本的Postgres(13),则可以使用标准的fetch
子句:
select *
from mytable
order by id
offset 50 rows fetch next 50 rows only
请注意,您确实需要order by
子句中的唯一列(或列集)才能获得稳定的分页。我假设使用id
。
在早期版本中,fetch
不可用,一种解决方法是使用窗口函数:
select *
from (select t.*,row_number() over(order by id) rn from mytable t) t
where rn between 51 and 100