2012-09-05 78 views
1

我對查詢返回的數據進行排序時出現了一個小問題,目的是獲取數據集中最舊的更新值,以便我只能更新該記錄。下面是我在做什麼:Oracle:MIN()語句導致空行返回

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
select * from (
-- your original select without rownum and with order by 
) 
WHERE ROWNUM = 1 

編輯一些解釋

我覺得order by子句在where條款後的結果集應用。因此,如果rownum = 1order by處於相同的select語句中,那麼將首先應用它,並且order by將僅排序1行,這將是無序結果集的第一行。