是否有选择记录顺序递增的方法?
例如,对于记录列表id 0
id 1
id 3
id 4
id 5
id 8
如下命令:
select id incrementally from 3
将返回值3
,4
和5
。它不会返回8
,因为它不是从5
开始顺序递增的。
分步演示:db<>fiddle
WITH groups AS ( -- 2
SELECT
*,
id - row_number() OVER (ORDER BY id) as group_id -- 1
FROM mytable
)
SELECT
*
FROM groups
WHERE group_id = ( -- 4
SELECT group_id FROM groups WHERE id = 3 -- 3
)
row_number()
窗口函数创建连续行计数。使用此差异,您可以创建连续记录组(id
值以1
增加)- 这个查询被放入
WITH
子句中,因为我们在下一步中重用了两次结果 - 选择最近创建的
group_id
- 为该组筛选表
另外:例如,如果您想在id = 4
处开始输出,则需要在WHERE
子句
AND id >= 4
过滤器。