如何选择 top 1 有一个明确的答案:
select * from table_name where rownum = 1
以及如何按日期降序排列:
select * from table_name order by trans_date desc
但它们不能一起工作( rownum
不是根据 trans_date
生成的):
... where rownum = 1 order by trans_date desc
问题是如何选择按日期排序的前 1 个?
原文由 Ivan Gerasimenko 发布,翻译遵循 CC BY-SA 4.0 许可协议
这会选择任意选择的一条记录(
where rownum = 1
),然后对这条记录进行排序(order by trans_date desc
)。如 Ivan 所示,您可以使用子查询对记录进行排序,然后在外部查询中使用
where rownum = 1
保留第一条记录。然而,这是非常特定于 Oracle 的,并且违反了将子查询结果视为无序的 SQL 标准(即 DBMS 可以忽略 order by 子句)。所以最好使用标准解决方案。从 Oracle 12c 开始:
在旧版本中: