SQL分页-查找与条件匹配的页面

SQL分页-查找与条件匹配的页面,sql,postgresql,pagination,Sql,Postgresql,Pagination,想象一下这张桌子 +---------+-------------+-----+ | id | name | seq | +---------+-------------+-----+ | 1 | Name1 | 5 | | 2 | Name2 | 4 | | 3 | Name3 | 2 | | 4 | Name4 | 1 | | 5 | Name5

想象一下这张桌子

+---------+-------------+-----+
| id      | name        | seq |
+---------+-------------+-----+
|       1 | Name1       |   5 |
|       2 | Name2       |   4 |
|       3 | Name3       |   2 |
|       4 | Name4       |   1 |
|       5 | Name5       |   3 |
...
| 1000000 | Name1000000 | 999 |
+---------+-------------+-----+
让我们把它分页

SELECT id, name, seq FROM my_table ORDER BY seq LIMIT 5 OFFSET {x};
现在我想显示
id=500
的页面

因此,预期的结果是

+-----+---------+-----+
| id  | name    | seq |
+-----+---------+-----+
| 651 | Name651 | 123 |
|  97 | Name97  | 124 |
| 198 | Name198 | 125 |
| 480 | Name480 | 126 |
| 500 | Name500 | 127 | <- Matching row here
+-----+---------+-----+
+-----+---------+-----+
|id |名称|序号|
+-----+---------+-----+
|651 |姓名651 | 123|
|97 |姓名97 | 124|
|198 |姓名198 | 125|
|480 |姓名480 | 126|

|500 | name 500 | 127 |为什么不直接通过
id
限制结果:

SELECT id, name FROM my_table WHERE id <= 500 ORDER BY id DESC LIMIT 5

从my_表中选择id,name,其中id假设
序列
没有间隔且从1开始:

select id, name, seq
from my_table
order by seq
limit 5
offset (
    select (seq - 1) / 5 * 5
    from my_table
    where id = 500
);

id
中是否有空白?查询中没有
order by
子句。因此,
id=500
可以在任何页面中。现在有了。谢谢你提供的信息