Oracle:MIN()语句导致空行返回

时间:2012-09-05 10:02:20

标签: oracle

我在查询从查询​​返回的数据时遇到了一个小问题,目的是获取数据集中最新的更新值,以便我只能更新该记录。这就是我正在做的事情:

WHERE ROWNUM = 1 AND TABLE1.ID != V_IGNOREID 
AND TABLE1.LASTREADTIME = (SELECT MIN(TABLE1.LASTREADTIME) FROM TABLE1)
ORDER BY TABLE1.LASTREADTIME DESC; 

是否包含ORDER BY语句没有区别。如果我只使用ROWNUM和相等检查,我得到数据,但它只在两行之间交替,这就是为什么我试图使用LASTREADTIME数据(这样我可以修改超过这两行)。有人对此有任何想法,或者有关如何有效使用MIN功能的任何建议?

干杯

1 个答案:

答案 0 :(得分:1)

select * from (
-- your original select without rownum and with order by
)
WHERE ROWNUM = 1

编辑一些解释

我认为order by子句适用于where子句后的结果集。因此,如果rownum = 1order by在同一个select语句中,那么它将首先应用,而order by将仅排序1行,这将是无序的第一行结果集。