How to get Last Record from Oracle without using RowID?

时间:2015-07-31 20:24:24

标签: oracle

I have 1 column table which is following:

Time_Minutes
6.950
6.967
6.083

I am getting these value after writing 2 pages big query in Oracle. From this, I want last record which is 6.083

But the issue is, I can not use ROWID as I am using order by and distinct in big query. What are other approaches?

Also, I can not use Order By Logic.

2 个答案:

答案 0 :(得分:3)

“最后记录”是指“最近插入的记录”吗?

首先,请忘记ROWID对获得此结果有用的概念。在将行插入表中时依赖ROWID增加是一个问题。可以删除行并在旧行所在的位置插入新行。段可以扩展和分配具有比先前范围“更低”的ROWID值的范围。分区,行移动,任何数量的其他功能都意味着ROWID不一定会随着新行的插入而增加。

如果该信息对您很重要,您需要有另一列来告诉您插入行的顺序。我个人会有一个DATE或TIMESTAMP,它可以自动填充一个触发器。您还可以使用从递增序列填充的ID列。

我能想到的唯一偷偷摸摸的选择是使用闪回版本查询来确定哪一行是最新的,但这会变得相当复杂。

答案 1 :(得分:0)

尝试分析功能。

SELECT * FROM 
    (SELECT a,
            rank() over (order by a) rk, 
            count(*) over() cnt
     from tablename
    ) where rk = ct