PostgreSQL:返回特定 ID 后的有序行

标签 postgresql

场景: 我正在显示一个记录表。它最初显示前 500 个并在底部显示“显示更多”,然后返回下一个 500。

问题: 如果在初始显示和单击“显示更多”之间添加了 1 条记录,这将导致“按日期排序,偏移 500,限制 500”重叠 1 行。

我想“按日期排序,偏移到‘显示的最后一行的 id’,限制 500”

我的行 ID 是 UUID。我对可以达到相同结果的替代方法持开放态度。

最佳答案

我认为您可以在 where 中使用子查询来完成此操作。

例如假定您正在对 users 表进行分页,并且您希望记录在给定用户之后:

SELECT *
  FROM users
  WHERE created_at > (
    SELECT created_at
      FROM users
      WHERE users.id = '00000000-1111-2222-3333-444444444444'
      LIMIT 1
  )
  ORDER BY created_at DESC limit 5;

关于PostgreSQL:返回特定 ID 后的有序行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712672/

相关文章:

postgresql - psql 似乎因长查询而超时

postgresql - 在 Postgres 8.4 中使用纪元时间获取每天的最小值/最大值

sql - 返回表的 PostgreSQL 存储过程出错

Postgresql更新查询(带有子查询)错误

database - 在 Postgres 中将字段添加和重命名为 ENUM 类型并保留要在字段中使用的多个 ENUM 类型

sql - 如何在某些条件下计算选定行中的值 - Postgresql

sql查询如何删除具有5列相同的行并在Postgres中保留1列

json - 使用 PostgreSQL,如何在 json 列中转义 "\"?

ruby-on-rails - Rails 查询执行导致数据库峰值

mysql - 比较 PostgreSQL 和 MySQL 上的查询