select 来自 Oracle 的最新记录的多个字段 table

select multiple fields from most recent record from an oracle table

我想做这样的事情:

select MAX(field1), field2 from tbl1 group by field1

但是上面的查询不起作用(sqlplus 抛出错误)。我怎样才能在单个查询中实现上述目标(目前,我将其拆分为两个查询以获得结果)。

您可以在其中使用内联视图和分析函数 (max() over()) 来选择具有最大时间戳的行:

select field1, field2 from 
    (select field1, field2, max(field1) over() as max_field1
     from tbl1)
where field1 = max_field1;

注意,如果时间戳值为max_field1的记录很多,则全部返回(任意顺序)。

在 Oracle 12 中,您可以使用:

select t.*
from tbl1
order by field1 desc
fetch first 1 row only;

较早的版本需要子查询才能实现相同的功能:

select t.*
from (select t.*
      from tbl1
      order by field1 desc
     ) t
where rownum = 1;

请注意,答案 answer 可以 return 多行,如果最大值在多行中。您的问题不清楚这是否可取。这些版本将 return 只有一行。