如何在postgres中列出符合顺序递增id的记录

  • 本文关键字:顺序 id 记录 postgres postgresql
  • 更新时间 :
  • 英文 :


是否有选择记录顺序递增的方法?

例如,对于记录列表
id 0
id 1
id 3
id 4
id 5
id 8

如下命令:

select id incrementally from 3

将返回值3,45。它不会返回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
)
  1. row_number()窗口函数创建连续行计数。使用此差异,您可以创建连续记录组(id值以1增加)
  2. 这个查询被放入WITH子句中,因为我们在下一步中重用了两次结果
  3. 选择最近创建的group_id
  4. 为该组筛选表

另外:例如,如果您想在id = 4处开始输出,则需要在WHERE子句

中添加AND id >= 4过滤器。

最新更新