1

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

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 功能有任何建议吗?

干杯

4

1 回答 1

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

编辑一些解释

我认为该order by子句应用于该where子句之后的结果集。因此,如果 与rownum = 1位于同一选择语句中order by,那么它将首先应用,并且order by将仅排序 1 行,这将是无序结果集的第一行。

于 2012-09-05T10:21:16.380 回答