PostgreSQL SELECT查询中生成步长为2的自增序号实现方法
PostgreSQL生成增量为2的序列解决方案
你之前使用ROW_NUMBER()函数的思路是正确的,PostgreSQL没有提供直接修改ROW_NUMBER步长的配置,你只需要对生成的默认连续序号做算术运算即可满足需求。
实现代码
SELECT Column1, Column2, ROW_NUMBER() OVER(ORDER BY 你的排序字段) * 2 AS Sequence FROM 你的表名;
原理解释
ROW_NUMBER()窗口函数默认会生成从1开始的连续正整数序列:1、2、3……,将计算结果乘以2后,自然就得到了步长为2、起始值为2的序列:2、4、6……,和你预期的输出完全匹配。
如果你后续需要生成步长为2、起始值为1的序列,将计算逻辑修改为ROW_NUMBER() OVER(...) * 2 - 1即可。
注意:OVER子句中的ORDER BY用来指定序号生成的排序规则,如果你不需要固定的排序逻辑,也可以直接写
OVER ()执行,但建议指定明确的排序字段,保证多次查询时同一行对应的序号稳定。
内容的提问来源于stack exchange,提问作者Jazz00
相关产品推荐
相关产品推荐

