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 只有一行。
我想做这样的事情:
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 只有一行。