You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL是否有类似Oracle ROWNUM的列序列号生成函数?

PostgreSQL 等效Oracle ROWNUM的实现方式

PostgreSQL没有内置和Oracle ROWNUM 同名的伪列,但可以用标准窗口函数 row_number() 实现完全一致的连续序列号生成效果。

对应参考代码的改写方案

你给出的Oracle代码:

TO_CHAR(ROWNUM) AS "TransactionID"

在PostgreSQL中可以直接改写为:

TO_CHAR(row_number() OVER ()) AS "TransactionID"

补充使用说明

  • 如果需要先对结果排序再生成序号,只需在OVER的括号内添加ORDER BY子句即可,示例:
    -- 按创建时间升序排序后生成序列号
    TO_CHAR(row_number() OVER (ORDER BY create_time ASC)) AS "TransactionID"
    
  • 如果有分组生成独立序列号的需求,还可以添加PARTITION BY子句实现按组内排序生成连续序号,属于Oracle原生ROWNUM不具备的扩展能力。
  • 如果要实现Oracle中WHERE ROWNUM < N的取前N条的分页需求,PostgreSQL更推荐直接使用LIMIT N语法,执行效率更高、写法更简洁。

内容的提问来源于stack exchange,提问作者Shalini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:15:04