SQL查询从聚合中获取单行值

时间:2010-08-20 18:56:54

标签: sql aggregate-functions

我有一个带有两列ID和START_DATE的Oracle表,我想运行一个查询来获取具有最新日期的记录的ID,最初我写了这个:

 select id from (select * from mytable order by start_date desc) where rownum = 1

有更清洁有效的方法吗?我经常在SQL中遇到这种模式,最终创建一个嵌套查询。

2 个答案:

答案 0 :(得分:1)

SELECT id FROM mytable WHERE start_date = (SELECT MAX(start_date) FROM mytable)

仍然是一个嵌套查询,但更简单,而且根据我的经验,更加标准。

答案 1 :(得分:0)

这看起来对我来说是一个非常干净和有效的解决方案 - 我认为你没有比这更好,当然假设你有一个start_date的索引。如果你想要所有的ID用于最新的开始日期,那么froadie的解决方案就更好了。