有没有办法在postgres中获得记录的rowid??
在oracle中,我可以像这样使用
SELECT MAX(BILLS.ROWID) FROM BILLS 发布于 2013-01-31 21:28:37
是的,有一个ctid列,它等同于rowid。但对你来说没用。Rowid和ctid是物理行/元组标识符,=>可以在重建/真空后更改。
请参阅:
发布于 2018-11-09 10:17:33
PostgreSQL row_number()窗口函数可用于使用rowid的大多数用途。在Oracle中,rowid是结果数据行的内在编号,而在Postgres中,row_number()在返回数据的逻辑顺序中计算编号。通常,如果您想要对行进行编号,这意味着您希望它们按特定的顺序排列,因此您需要指定在对行进行编号时对行进行排序的列:
select client_name, row_number() over (order by date) from bills;如果您只想对行进行任意编号,则可以将over子句留空:
select client_name, row_number() over () from bills;如果您想要计算行号上的聚合,则必须使用子查询:
select max(rownum) from (
select row_number() over () as rownum from bills
) r;如果只需要表中的最后一项,并且有一个列可以按顺序排序,那么有一种比使用row_number()更简单的方法。只需颠倒排序顺序并选择第一项:
select * from bills
order by date desc limit 1;发布于 2013-04-13 16:44:15
使用序列。您可以选择4或8字节值。
http://www.neilconway.org/docs/sequences/
https://stackoverflow.com/questions/14626481
复制相似问题