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
可以在任何页面中。现在有了。谢谢你提供的信息