首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgres 9.2中的ROWID等效项

postgres 9.2中的ROWID等效项
EN

Stack Overflow用户
提问于 2013-01-31 21:05:25
回答 4查看 70.1K关注 0票数 25

有没有办法在postgres中获得记录的rowid??

在oracle中,我可以像这样使用

代码语言:javascript
复制
SELECT MAX(BILLS.ROWID) FROM BILLS  
EN

回答 4

Stack Overflow用户

发布于 2013-01-31 21:28:37

是的,有一个ctid列,它等同于rowid。但对你来说没用。Rowid和ctid是物理行/元组标识符,=>可以在重建/真空后更改。

请参阅:

票数 21
EN

Stack Overflow用户

发布于 2018-11-09 10:17:33

PostgreSQL row_number()窗口函数可用于使用rowid的大多数用途。在Oracle中,rowid是结果数据行的内在编号,而在Postgres中,row_number()在返回数据的逻辑顺序中计算编号。通常,如果您想要对行进行编号,这意味着您希望它们按特定的顺序排列,因此您需要指定在对行进行编号时对行进行排序的列:

代码语言:javascript
复制
select client_name, row_number() over (order by date) from bills;

如果您只想对行进行任意编号,则可以将over子句留空:

代码语言:javascript
复制
select client_name, row_number() over () from bills;

如果您想要计算行号上的聚合,则必须使用子查询:

代码语言:javascript
复制
select max(rownum) from (
    select row_number() over () as rownum from bills
) r;

如果只需要表中的最后一项,并且有一个列可以按顺序排序,那么有一种比使用row_number()更简单的方法。只需颠倒排序顺序并选择第一项:

代码语言:javascript
复制
select * from bills 
order by date desc limit 1;
票数 8
EN

Stack Overflow用户

发布于 2013-04-13 16:44:15

使用序列。您可以选择4或8字节值。

http://www.neilconway.org/docs/sequences/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14626481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档