从 table 中获取指定数量的实体(按时间戳排序)

Get specified quantity of entities from table sorted by timestamp

这很复杂,但我会尽力解释我的意思。我的想法是在用户滚动页面时服务器向客户端发送下一个 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 检查以下内容 link: 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 不可用,一种解决方法是使用 window 函数:

select *
from (select t.*, row_number() over(order by id) rn from mytable t) t
where rn between 51 and 100