我有一个数据库表,例如“项目”。我有这些项目的时间表,按字段ascended_at(日期时间)排序。我需要为这样的时间线制作一个分页 api。所以,我的第一个版本是:
HTTP GET /items/timeline?page=[PAGE_NUM]
哪个会触发
SELECT * FROM items LIMIT 10 OFFSET [0, 10, 20, ...] ORDER BY ascended_at;
但问题是:当新商品到货时,所有页面每 1 件商品都会移动。为了避免这种情况,我添加了 from_asc_at 参数:
HTTP GET /items/timeline?page=[PAGE_NUM]&from_asc_at=123123123
哪个会触发
SELECT * FROM items WHERE ascended_at <= [asc_at_parameter] LIMIT 10 OFFSET [0, 10, 20, ...] ORDER BY ascended_at;
但这并不准确,因为可能有两个项目具有相同的ascended_at,并且您可以在两个不同的页面中看到相同的项目(但不应该)。
所以,我的问题是:有什么可能的解决方案?
- 使用 ID(因为它是唯一的)?但是如果不是按ID排序怎么办?
- 还有什么想法吗?